From amk@amk.ca Sat Apr 12 14:11:24 2003 From: amk@amk.ca (A.M. Kuchling) Date: Sat, 12 Apr 2003 09:11:24 -0400 Subject: [Catalog-sig] PEP 314: Updating the package metadata format Message-ID: <20030412131123.GA20645@nyman.amk.ca> At PyCon there was a Distribution BoF that I found very helpful, and that convinced me that taking care of dependencies is feasible. See http://www.amk.ca/diary/2003/03/28.html#2003-03-28-4 for my full account. One step that isn't listed in the TODO list in that entry is updating the metadata format specified in PEP 241 to include requirements and dependencies. The updated specification has been allocated PEP 314. Rather than post the whole document, making it difficult to see the changes, a diff between the old and new version is included below. Please comment on the changes. --amk (www.amk.ca) HIPPOLYTA: I never heard so musical a discord, such sweet thunder. -- _A Midsummer Night's Dream_, IV, i Index: pep-0314.txt =================================================================== RCS file: /cvsroot/python/python/nondist/peps/pep-0314.txt,v retrieving revision 1.1 retrieving revision 1.3 diff -u -u -r1.1 -r1.3 --- pep-0314.txt 12 Apr 2003 19:45:01 -0000 1.1 +++ pep-0314.txt 12 Apr 2003 21:16:50 -0000 1.3 @@ -13,6 +13,8 @@ packages. It includes specifics of the field names, and their semantics and usage. + This document specifies version 1.1 of the metadata format. + Version 1.0 is specified in PEP 241. Including Metadata in Packages @@ -48,12 +50,12 @@ Metadata-Version - Version of the file format; currently "1.0" is the only - legal value here. + Version of the file format; currently "1.0" and "1.1" are the + only legal values here. Example: - Metadata-Version: 1.0 + Metadata-Version: 1.1 Name @@ -211,16 +213,99 @@ License: MIT + Requires (multiple use) + + Each entry contains a string describing some other component or + module required by this package. + + The format of a requirement string is simple: an arbitrary + sequence of characters, optionally followed by a version + declaration within parentheses. Leading and trailing whitespace + are ignored, and whitespace within the string is normalized to a + single space. + + A version declaration is a series of conditional operators and + version numbers, separated by commas. Conditional operators + must be one of "<", ">", "<=", ">=", "=", and "!=". Version + numbers must be in the format accepted by the + distutils.version.StrictVersion class: two or three + dot-separated numeric components, with an optional "pre-release" + tag on the end consisting of the letter 'a' or 'b' followed by a + number. Example version numbers are "1.0", "2.3a2", "1.3.99", + + XXX Do we really need = and !=? + + XXX Should it be == or =? + + XXX Should we support LooseVersion instead of StrictVersion? + LooseVersions aren't comparable... + + Any number of conditional operators can be specified, e.g. + ">1.0, !=1.3.4, <2.0". + + All of the following are possible requirement strings: "rfc822", + "", "zlib (>=1.1.4)", "XML parser". + + There's no canonical list of what strings should be used; the + Python community is left to choose its own standards. + + Example: + + Requires: re + Requires: sys + Requires: zlib + Requires: pyexpat (>1.0) + Requires: DB-API 2.0 module + + Provides (multiple use) + + Each entry contains a string describing a component or + module that will be provided by this package once it is + installed. These strings should match the ones used in + Requirements fields. Version declarations cannot be supplied; + instead the package's version number will be used. + + Example: + + Provides: xml + Provides: xml.utils + Provides: xml.utils.iso8601 + Provides: xml.dom + + Obsoletes (multiple use) + + Each entry contains a string describing a component or module + that this package renders obsolete, meaning that the two packages + should not be installed at the same time. Version declarations + cannot be supplied. (XXX Or are they needed for Obsoletes?) + + The most common use of this field will be in case a package name + changes, e.g. Gorgon 2.3 gets subsumed into Torqued Python 1.0. + When you install Torqued Python, the Gorgon package should be + removed. + + Example: + + Obsoletes: Gorgon + + Conflicts (multiple use) + + Each entry contains a string describing a component or module + that conflicts with this package, meaning that the two packages + should not be installed at the same time. Version declarations + cannot be supplied. + + Conflict resolution probably isn't very important for Python + programs, because few extensions will cause problems for other + extensions, unless they're using the same package name. This + field name is being defined here for future use. + + Conflicts: Gorgon + Acknowledgements - Many changes and rewrites to this document were suggested by the - readers of the Distutils SIG. In particular, Sean Reifschneider - often contributed actual text for inclusion in this PEP. - - The list of licenses was compiled using the SourceForge license - list and the CTAN license list compiled by Graham Williams; Carey - Evans also offered several useful suggestions on this list. + None yet. Copyright From acapnotic@twistedmatrix.com Thu Apr 17 00:34:17 2003 From: acapnotic@twistedmatrix.com (Kevin Turner) Date: 16 Apr 2003 16:34:17 -0700 Subject: [Catalog-sig] PKG-INFO exports? Message-ID: <1050536015.22304.208.camel@troglodyte.funhouse> --=-SJNdTmDle6JvC/G6ceFG Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi. Can I get python.org/pypi to give me raw metadata, i.e. PKG-INFO files instead of the html-coated view? pypi source at sourceforge.net says: > no. Oh. Bummer. Can it? If I patched pypi..WebUI and added a raw_display action, would you host it? Thanks, - Kevin --=20 The moon is full, 100.0% illuminated, 14.6 days old. --=-SJNdTmDle6JvC/G6ceFG Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQA+nehOh3hqIoukqUQRAgdFAJ9aZBEBc69rQO9/BO4GwzUMvmhRdQCfW3tk SA+Zj2gOaSEgLQuWUrCeGiM= =Cp/Z -----END PGP SIGNATURE----- --=-SJNdTmDle6JvC/G6ceFG-- From richardjones@optushome.com.au Thu Apr 17 00:38:21 2003 From: richardjones@optushome.com.au (Richard Jones) Date: Thu, 17 Apr 2003 09:38:21 +1000 Subject: [Catalog-sig] PKG-INFO exports? In-Reply-To: <1050536015.22304.208.camel@troglodyte.funhouse> References: <1050536015.22304.208.camel@troglodyte.funhouse> Message-ID: <200304170938.23152.richardjones@optushome.com.au> On Thu, 17 Apr 2003 09:34 am, Kevin Turner wrote: > Hi. Can I get python.org/pypi to give me raw metadata, i.e. PKG-INFO > files instead of the html-coated view? > > pypi source at sourceforge.net says: > > no. > > Oh. Bummer. Can it? If I patched pypi..WebUI and added a raw_display > action, would you host it? Sure. I'll give you access to the SF project if that'll make things easier. Richard From acapnotic@twistedmatrix.com Thu Apr 17 01:48:23 2003 From: acapnotic@twistedmatrix.com (Kevin Turner) Date: 16 Apr 2003 17:48:23 -0700 Subject: [Catalog-sig] PKG-INFO exports? In-Reply-To: <200304170938.23152.richardjones@optushome.com.au> References: <1050536015.22304.208.camel@troglodyte.funhouse> <200304170938.23152.richardjones@optushome.com.au> Message-ID: <1050540501.22314.240.camel@troglodyte.funhouse> --=-tqYZ8l0VD/f41OyW+E+s Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On Wed, 2003-04-16 at 16:38, Richard Jones wrote: > Sure. I'll give you access to the SF project if that'll make things easie= r. Thanks, my sourceforge username is 'acapnotic'. I can think of two ways to do this, one is to add a new action 'raw_display', the other would be to add a 'format' parameter to the existing 'display' argument, which would default to a pretty HTML view, but could also be set to PKG-INFO. With that, you could later offer extensions for yaml or xml/rdf or what have you, without a proliferation of different action types. Preferences? --=20 The moon is full, 100.0% illuminated, 14.7 days old. --=-tqYZ8l0VD/f41OyW+E+s Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQA+nfnVh3hqIoukqUQRAheGAKDmQDkrAgxK3irgjOIdV6izQRiSwwCeL/EM /b96htEPeLA7R4GvKUSi45c= =sF0D -----END PGP SIGNATURE----- --=-tqYZ8l0VD/f41OyW+E+s-- From richardjones@optushome.com.au Thu Apr 17 02:06:57 2003 From: richardjones@optushome.com.au (Richard Jones) Date: Thu, 17 Apr 2003 11:06:57 +1000 Subject: [Catalog-sig] PKG-INFO exports? In-Reply-To: <1050540501.22314.240.camel@troglodyte.funhouse> References: <1050536015.22304.208.camel@troglodyte.funhouse> <200304170938.23152.richardjones@optushome.com.au> <1050540501.22314.240.camel@troglodyte.funhouse> Message-ID: <200304171106.58219.richardjones@optushome.com.au> On Thu, 17 Apr 2003 10:48 am, Kevin Turner wrote: > On Wed, 2003-04-16 at 16:38, Richard Jones wrote: > > Sure. I'll give you access to the SF project if that'll make things > > easier. > > Thanks, my sourceforge username is 'acapnotic'. OK, you're added. > I can think of two ways to do this, one is to add a new action > 'raw_display', the other would be to add a 'format' parameter to the > existing 'display' argument, which would default to a pretty HTML view, > but could also be set to PKG-INFO. With that, you could later offer > extensions for yaml or xml/rdf or what have you, without a proliferation > of different action types. I'd prefer to go with raw_display. Or rather, display_pkginfo. That seems to fit in better with the general feel of the code. As you will have noticed by looking in the webui code, it's grown somewhat haphazardly :) In hindsight, I should have made use of some web framework, but when I started I had such a small requirement of the web interface I didn't feel it was necessary. Ho hum :) Richard From amk@amk.ca Wed Apr 16 14:18:23 2003 From: amk@amk.ca (A.M. Kuchling) Date: Wed, 16 Apr 2003 09:18:23 -0400 Subject: [Catalog-sig] PKG-INFO exports? In-Reply-To: <1050540501.22314.240.camel@troglodyte.funhouse> References: <1050536015.22304.208.camel@troglodyte.funhouse> <200304170938.23152.richardjones@optushome.com.au> <1050540501.22314.240.camel@troglodyte.funhouse> Message-ID: <20030416131823.GA14500@nyman.amk.ca> --sm4nu43k4a2Rpi4c Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Wed, Apr 16, 2003 at 05:48:23PM -0700, Kevin Turner wrote: >but could also be set to PKG-INFO. With that, you could later offer >extensions for yaml or xml/rdf or what have you, without a proliferation >of different action types. HTTP already has a header for this that gets passed as the ACCEPT_TYPES HTTP header. So text/plain could get PKG-INFO, text/html would get the existing HTML, application/rdf+xml could get some future hypothetical RDF encoding, and so forth. Here are two functions from Quixote that do the hard part. # These are needed by 'get_encoding()', to parse the "Accept-Encoding" # header. LWS is linear whitespace; the latter two assume that LWS # has been removed. _http_lws_re = re.compile("(\r\n)?[ \t]+") _http_list_re = re.compile(r",+") _http_encoding_re = re.compile(r"([^;]+)(;q=([\d.]+))?$") def get_accepted_types (self): """get_accepted_types() : {string:float} Return a dictionary mapping MIME types the client will accept to the corresponding quality value (1.0 if no value was specified). """ accept_types = self.environ.get('HTTP_ACCEPT', "") return self._parse_pref_header(accept_types) def _parse_pref_header (self, S): """_parse_pref_header(S:string) : {string:float} Parse a list of HTTP preferences (content types, encodings) and return a dictionary mapping strings to the quality value. """ found = {} # remove all linear whitespace S = _http_lws_re.sub("", S) for coding in _http_list_re.split(S): m = _http_encoding_re.match(coding) if m: encoding = m.group(1).lower() q = m.group(3) or 1.0 try: q = float(q) except ValueError: continue if encoding == "*": continue # stupid, ignore it if q > 0: found[encoding] = q return found --amk (www.amk.ca) Homological algebra beckons -- brain relief in this context! -- Michael Hudson, 07 Nov 2001, in a discussion of Stackless Python --sm4nu43k4a2Rpi4c Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+nVgckTvcXou9d/ARAlZ1AKDlzrgPggfa8cKDj+68v+WUm3LC8ACg7K2s 0YpHHKRy8cgsjR08rY3gzfY= =kuhX -----END PGP SIGNATURE----- --sm4nu43k4a2Rpi4c-- From acapnotic@twistedmatrix.com Thu Apr 17 03:46:03 2003 From: acapnotic@twistedmatrix.com (Kevin Turner) Date: 16 Apr 2003 19:46:03 -0700 Subject: [Catalog-sig] PKG-INFO exports? In-Reply-To: <200304171106.58219.richardjones@optushome.com.au> References: <1050536015.22304.208.camel@troglodyte.funhouse> <200304170938.23152.richardjones@optushome.com.au> <1050540501.22314.240.camel@troglodyte.funhouse> <200304171106.58219.richardjones@optushome.com.au> Message-ID: <1050547561.22306.259.camel@troglodyte.funhouse> --=-rq4Qj3MvgNfVE3JIJjtj Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On Wed, 2003-04-16 at 18:06, Richard Jones wrote:=20 > I'd prefer to go with raw_display. Or rather, display_pkginfo. That seems= to=20 > fit in better with the general feel of the code. Ok, action display_pkginfo is checked in but untested. (There's some issue with my testbed pypi installation, I can't seem to get it to register new users. I hit the link given in the e-mail, and it just keeps asking me to authenticate, never succeeding.) > As you will have noticed by looking in the webui code, it's grown somewha= t=20 > haphazardly :) In hindsight, I should have made use of some web framework= ,=20 > but when I started I had such a small requirement of the web interface I=20 > didn't feel it was necessary. Ho hum :) I did indeed notice that. Well, for the time being it's still navigable, so yes, "ho hum" it is. Cheers, - Kevin --=20 The moon is full, 100.0% illuminated, 14.8 days old. --=-rq4Qj3MvgNfVE3JIJjtj Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQA+nhVoh3hqIoukqUQRApBOAKDP+5CrESaY2GN4BCyDk5iZzAyUUwCdF4Cb W66ukQrUo3dgEcGFZLGELJU= =+9Mb -----END PGP SIGNATURE----- --=-rq4Qj3MvgNfVE3JIJjtj-- From acapnotic@twistedmatrix.com Thu Apr 17 21:22:05 2003 From: acapnotic@twistedmatrix.com (Kevin Turner) Date: 17 Apr 2003 13:22:05 -0700 Subject: [Catalog-sig] PKG-INFO exports? In-Reply-To: <20030416131823.GA14500@nyman.amk.ca> References: <1050536015.22304.208.camel@troglodyte.funhouse> <200304170938.23152.richardjones@optushome.com.au> <1050540501.22314.240.camel@troglodyte.funhouse> <20030416131823.GA14500@nyman.amk.ca> Message-ID: <1050610921.22306.306.camel@troglodyte.funhouse> On Wed, 2003-04-16 at 06:18, A.M. Kuchling wrote: > HTTP already has a header for this that gets passed as the > ACCEPT_TYPES HTTP header. So text/plain could get PKG-INFO, text/html > would get the existing HTML, application/rdf+xml could get some future > hypothetical RDF encoding, and so forth. Hmm. This is, in the bizarro W3C-universe, the right answer, if we are in fact always publishing the same set of information and just expressing it in different formats. However, back here on the mortal plane, it's much more difficult to work with than giving different URLs to different formats. You have to use a tool that lets you specify this header, and that's probably not unreasonable here, but it does mean you can't test it in your everyday browser. Also, CacheNow! says that http caches do not "co-exist happily" with happily with content negotiation[1]. As long as the URL has got a ".cgi?" in it that probably doesn't matter (as it's not likely to get cached anyway), but it's another factor to consider. [1] http://vancouver-webpages.com/CacheNow/negotiation.html -- The moon is full, 99.2% illuminated, 15.6 days old. From acapnotic@twistedmatrix.com Mon Apr 21 21:57:00 2003 From: acapnotic@twistedmatrix.com (Kevin Turner) Date: 21 Apr 2003 13:57:00 -0700 Subject: [Catalog-sig] PKG-INFO exports? In-Reply-To: <1050547561.22306.259.camel@troglodyte.funhouse> References: <1050536015.22304.208.camel@troglodyte.funhouse> <200304170938.23152.richardjones@optushome.com.au> <1050540501.22314.240.camel@troglodyte.funhouse> <200304171106.58219.richardjones@optushome.com.au> <1050547561.22306.259.camel@troglodyte.funhouse> Message-ID: <1050958616.22313.438.camel@troglodyte.funhouse> On Wed, 2003-04-16 at 19:46, Kevin Turner wrote: > Ok, action display_pkginfo is checked in but untested. I've tested it now; I'd neglected to handle the outgoing http headers before, that's been fixed. You can review the changes at http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/pypi/pypi/webui.py.diff?r1=1.54&r2=1.52 Any comments on the code or hints on when it might go live? > (There's some > issue with my testbed pypi installation, I can't seem to get it to > register new users. I hit the link given in the e-mail, and it just > keeps asking me to authenticate, never succeeding.) For the record, this was because my web server was setting HTTP_AUTHENTICATION and not HTTP_CGI_AUTHENTICATION. Changing the script to check for the other variable worked well enough, but still had some odd problems. ('login' worked. posting to submit_pkg_info worked. But when I posted to submit_form, it acted like it wasn't authenticating again. I love CGI.) Thanks, - Kevin -- The moon is waning gibbous, 70.5% illuminated, 20.2 days old. From richardjones@optushome.com.au Wed Apr 23 00:14:11 2003 From: richardjones@optushome.com.au (Richard Jones) Date: Wed, 23 Apr 2003 09:14:11 +1000 Subject: [Catalog-sig] PKG-INFO exports? In-Reply-To: <1050958616.22313.438.camel@troglodyte.funhouse> References: <1050536015.22304.208.camel@troglodyte.funhouse> <1050547561.22306.259.camel@troglodyte.funhouse> <1050958616.22313.438.camel@troglodyte.funhouse> Message-ID: <200304230914.11870.richardjones@optushome.com.au> On Tue, 22 Apr 2003 06:57 am, Kevin Turner wrote: > On Wed, 2003-04-16 at 19:46, Kevin Turner wrote: > > Ok, action display_pkginfo is checked in but untested. > > I've tested it now; I'd neglected to handle the outgoing http headers > before, that's been fixed. You can review the changes at > > http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/pypi/pypi/webui.py.diff?r1=1 >.54&r2=1.52 > > Any comments on the code or hints on when it might go live? Code looks good to me. I've added a link to the PKG-INFO download link, and it's now live on pydotorg. Richard From theller@python.net Wed Apr 23 18:41:09 2003 From: theller@python.net (Thomas Heller) Date: 23 Apr 2003 19:41:09 +0200 Subject: [Catalog-sig] PEP 314: Updating the package metadata format In-Reply-To: <20030412131123.GA20645@nyman.amk.ca> References: <20030412131123.GA20645@nyman.amk.ca> Message-ID: Your recent comment on c.l.p reminded me that there was something I would like to comment on. In your diary entry http://www.amk.ca/diary/2003/03/28.html#2003-03-28-4 you say Windows doesn't have a package system/package database. I've shown in my pypan prototype that the uninstall information that bdist_wininst writes contains enough information for a lot of things: - you can remove the installed files - you can list installed packages - you may even be able to retrieve a version number of installed packages I don't remember if there is more. Of course, this info is only present for packages installed from bdist_wininst, but it would be trivial to extend distutils to either create a bdist_wininst installer for the "setup.py install" command and run it, or extend the install command to write this info. Thomas From theller@python.net Wed Apr 23 18:57:39 2003 From: theller@python.net (Thomas Heller) Date: 23 Apr 2003 19:57:39 +0200 Subject: [Catalog-sig] Re: PEP 314: Updating the package metadata format References: <20030412131123.GA20645@nyman.amk.ca> Message-ID: "A.M. Kuchling" writes: (see my embedded comments) > + Requires (multiple use) > + > + Each entry contains a string describing some other component or > + module required by this package. > + > + The format of a requirement string is simple: an arbitrary > + sequence of characters, optionally followed by a version > + declaration within parentheses. Leading and trailing whitespace > + are ignored, and whitespace within the string is normalized to a > + single space. > + > + A version declaration is a series of conditional operators and > + version numbers, separated by commas. Conditional operators > + must be one of "<", ">", "<=", ">=", "=", and "!=". Version > + numbers must be in the format accepted by the > + distutils.version.StrictVersion class: two or three > + dot-separated numeric components, with an optional "pre-release" > + tag on the end consisting of the letter 'a' or 'b' followed by a > + number. Example version numbers are "1.0", "2.3a2", "1.3.99", > + > + XXX Do we really need = and !=? Why not? > + > + XXX Should it be == or =? > + I would prefer ==. > + XXX Should we support LooseVersion instead of StrictVersion? > + LooseVersions aren't comparable... No support for LooseVersion, IMO. > + Conflicts (multiple use) > + > + Each entry contains a string describing a component or module > + that conflicts with this package, meaning that the two packages > + should not be installed at the same time. Version declarations > + cannot be supplied. > + > + Conflict resolution probably isn't very important for Python > + programs, because few extensions will cause problems for other > + extensions, unless they're using the same package name. This > + field name is being defined here for future use. > + > + Conflicts: Gorgon > + I have a use case for Conflicts with version numbers. ctypes was a couple of modules up to version 0.4.x, and is a package starting with 0.6.x. If you have both versions installed, you end up with 'ctypes.py' and 'ctypes\__init__.py' in lib/site-packages. If you 'import ctypes', I'm not sure if you get the package or the module (there are probably rules in Python to resolve this, but it may be wrong anyway). Or should this case be handled differently? Thomas From akuchlin@mems-exchange.org Wed Apr 23 19:21:58 2003 From: akuchlin@mems-exchange.org (Andrew Kuchling) Date: Wed, 23 Apr 2003 14:21:58 -0400 Subject: [Catalog-sig] Re: PEP 314: Updating the package metadata format In-Reply-To: References: <20030412131123.GA20645@nyman.amk.ca> Message-ID: <20030423182158.GA24064@ute.mems-exchange.org> On Wed, Apr 23, 2003 at 07:57:39PM +0200, Thomas Heller wrote: >I have a use case for Conflicts with version numbers. >ctypes was a couple of modules up to version 0.4.x, and is a package >starting with 0.6.x. > >If you have both versions installed, you end up with 'ctypes.py' and >'ctypes\__init__.py' in lib/site-packages. If you 'import ctypes', I'm >not sure if you get the package or the module (there are probably rules >in Python to resolve this, but it may be wrong anyway). I don't think you'll be able to have two versions of the same package installed, so this shouldn't come up. --amk From theller@python.net Wed Apr 23 19:25:09 2003 From: theller@python.net (Thomas Heller) Date: 23 Apr 2003 20:25:09 +0200 Subject: [Catalog-sig] Re: PEP 314: Updating the package metadata format In-Reply-To: <20030423182158.GA24064@ute.mems-exchange.org> References: <20030412131123.GA20645@nyman.amk.ca> <20030423182158.GA24064@ute.mems-exchange.org> Message-ID: Andrew Kuchling writes: > On Wed, Apr 23, 2003 at 07:57:39PM +0200, Thomas Heller wrote: > >I have a use case for Conflicts with version numbers. > >ctypes was a couple of modules up to version 0.4.x, and is a package > >starting with 0.6.x. > > > >If you have both versions installed, you end up with 'ctypes.py' and > >'ctypes\__init__.py' in lib/site-packages. If you 'import ctypes', I'm > >not sure if you get the package or the module (there are probably rules > >in Python to resolve this, but it may be wrong anyway). > > I don't think you'll be able to have two versions of the same package > installed, so this shouldn't come up. Maybe it's a bug in bdist_wininst, but you can first install ctypes-0.4.0.exe, than ctypes-0.6.0.exe (for example), and it doesn't complain, nor does the latter remove the files from the former. Thomas From akuchlin@mems-exchange.org Wed Apr 23 19:35:32 2003 From: akuchlin@mems-exchange.org (Andrew Kuchling) Date: Wed, 23 Apr 2003 14:35:32 -0400 Subject: [Catalog-sig] Re: PEP 314: Updating the package metadata format In-Reply-To: References: <20030412131123.GA20645@nyman.amk.ca> <20030423182158.GA24064@ute.mems-exchange.org> Message-ID: <20030423183532.GA30403@ute.mems-exchange.org> On Wed, Apr 23, 2003 at 08:25:09PM +0200, Thomas Heller wrote: >Maybe it's a bug in bdist_wininst, but you can first install >ctypes-0.4.0.exe, than ctypes-0.6.0.exe (for example), and it doesn't >complain, nor does the latter remove the files from the former. This is also possible with the install command currently; it just copies files into place, but doesn't remove any existing files. With a working package database the existing files can be removed, though implementing this will be touchy; we don't want to leave the user's system broken if the installation fails midway through, having already removed the old version of the package. --amk (www.amk.ca) In London there is a man who screams when the church bells ring. -- H.P. Lovecraft, "The Descendant" From gh@ghaering.de Fri Apr 25 01:53:13 2003 From: gh@ghaering.de (=?ISO-8859-1?Q?Gerhard_H=E4ring?=) Date: Fri, 25 Apr 2003 02:53:13 +0200 Subject: [Catalog-sig] PyPI optimization? Message-ID: <3EA886F9.9000805@ghaering.de> Hi folks, I just registered two project at PyPI and it was horribly slow for me. I also noticed it uses PySQLite :-) But only because I got a traceback from a locked database file approx. one out of three requests. If you need any help in optimizing the SQLite access and/or converting the system to a real multiuser database like PostgreSQL, I'd be willing to help. [1] Or maybe it's just that the webserver is very slow?! This doesn't seem to be true for the rest of python.org in any case. -- Gerhard [1] It would be an excellent test case for the busy callback handlers I added to PySQLite recently. Though I still wouldn't recommend PySQLite for a hopefully busy web application, like this one ... From richardjones@optushome.com.au Fri Apr 25 02:34:20 2003 From: richardjones@optushome.com.au (Richard Jones) Date: Fri, 25 Apr 2003 11:34:20 +1000 Subject: [Catalog-sig] PyPI optimization? In-Reply-To: <3EA886F9.9000805@ghaering.de> References: <3EA886F9.9000805@ghaering.de> Message-ID: <200304251134.20212.richardjones@optushome.com.au> --Boundary-02=_cCJq+r25aIydiuQ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Description: signed data Content-Disposition: inline On Friday 25 April 2003 10:53 am, Gerhard H=E4ring wrote: > I just registered two project at PyPI and it was horribly slow for me. Yeah, not sure what's going on there - I've not had a chance to really look= =20 into optimisation. > I also noticed it uses PySQLite :-) But only because I got a traceback > from a locked database file approx. one out of three requests. Yep, not sure why we're getting those locking problems. I am using the busy= =20 handler, with a timeout of 30 seconds. > If you need any help in optimizing the SQLite access and/or converting > the system to a real multiuser database like PostgreSQL, I'd be willing > to help. [1] I welcome any help :) It you're serious, then I'll add you to the pypi project on sourceforge. > Or maybe it's just that the webserver is very slow?! This doesn't seem > to be true for the rest of python.org in any case. Shouldn't be... Richard --Boundary-02=_cCJq+r25aIydiuQ Content-Type: application/pgp-signature Content-Description: signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQA+qJCcrGisBEHG6TARAtgHAJ9lSxy+qsFT3V1niG6iRU66F285ywCeIRjG zXqzgfXRjuGgN7qGgPX3DTE= =FqDr -----END PGP SIGNATURE----- --Boundary-02=_cCJq+r25aIydiuQ-- From thomas@xs4all.net Fri Apr 25 11:07:12 2003 From: thomas@xs4all.net (Thomas Wouters) Date: Fri, 25 Apr 2003 12:07:12 +0200 Subject: [Catalog-sig] PyPI optimization? In-Reply-To: <200304251134.20212.richardjones@optushome.com.au> References: <3EA886F9.9000805@ghaering.de> <200304251134.20212.richardjones@optushome.com.au> Message-ID: <20030425100712.GB26242@xs4all.nl> On Fri, Apr 25, 2003 at 11:34:20AM +1000, Richard Jones wrote: > On Friday 25 April 2003 10:53 am, Gerhard H=E4ring wrote: > > Or maybe it's just that the webserver is very slow?! This doesn't see= m > > to be true for the rest of python.org in any case. >=20 > Shouldn't be... Well, the machine is a lot heavier loaded now than it was before PyPI was really used; the load used to be ~0.05, it's now hovering around 0.8, sometimes as high as 1.5. That isn't terribly high, though, as this is a dual CPU machine, and Apache for one isn't slowed down by it. I believe i= t's PyPI doing heavy I/O, or perhaps some form of locking, as the python processes aren't using that much CPU either. --=20 Thomas Wouters Hi! I'm a .signature virus! copy me into your .signature file to help me = spread! From richardjones@optushome.com.au Fri Apr 25 12:00:41 2003 From: richardjones@optushome.com.au (Richard Jones) Date: Fri, 25 Apr 2003 21:00:41 +1000 Subject: [Catalog-sig] PyPI optimization? In-Reply-To: <20030425100712.GB26242@xs4all.nl> References: <3EA886F9.9000805@ghaering.de> <200304251134.20212.richardjones@optushome.com.au> <20030425100712.GB26242@xs4all.nl> Message-ID: <200304252100.58072.richardjones@optushome.com.au> --Boundary-02=_pVRq+OlxpOMiyok Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Description: signed data Content-Disposition: inline On Friday 25 April 2003 08:07 pm, Thomas Wouters wrote: > Well, the machine is a lot heavier loaded now than it was before PyPI was > really used; the load used to be ~0.05, it's now hovering around 0.8, > sometimes as high as 1.5. That isn't terribly high, though, as this is a > dual CPU machine, and Apache for one isn't slowed down by it. I believe > it's PyPI doing heavy I/O, or perhaps some form of locking, as the python > processes aren't using that much CPU either. I haven't looked at the hits that PyPI is getting - does creosote have any = web=20 stats automatically generated? Perhaps it would be a good idea to switch to an RDBMS that is more=20 multi-user-friendly. Gerhard, is your offer to do this still open? The=20 backend of pypi is all in the store module, and it's quite simple. It'll=20 probably work out of the box on postgresql/mysql. Richard --Boundary-02=_pVRq+OlxpOMiyok Content-Type: application/pgp-signature Content-Description: signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQA+qRVprGisBEHG6TARAn4AAJ97hsb28VY0wL9BCsP3CbMdB3uTdwCfbz4e UIM/uaU7OIX5SQtLBzkIca4= =IL+m -----END PGP SIGNATURE----- --Boundary-02=_pVRq+OlxpOMiyok-- From gh@ghaering.de Fri Apr 25 12:33:38 2003 From: gh@ghaering.de (Gerhard Haering) Date: Fri, 25 Apr 2003 13:33:38 +0200 Subject: [Catalog-sig] PyPI optimization? In-Reply-To: <200304252100.58072.richardjones@optushome.com.au> References: <3EA886F9.9000805@ghaering.de> <200304251134.20212.richardjones@optushome.com.au> <20030425100712.GB26242@xs4all.nl> <200304252100.58072.richardjones@optushome.com.au> Message-ID: <3EA91D12.4000004@ghaering.de> Richard Jones wrote: > On Friday 25 April 2003 08:07 pm, Thomas Wouters wrote: > >>Well, the machine is a lot heavier loaded now than it was before PyPI was >>really used; the load used to be ~0.05, it's now hovering around 0.8, >>sometimes as high as 1.5. That isn't terribly high, though, as this is a >>dual CPU machine, and Apache for one isn't slowed down by it. I believe >>it's PyPI doing heavy I/O, or perhaps some form of locking, as the python >>processes aren't using that much CPU either. > > > I haven't looked at the hits that PyPI is getting - does creosote have any web > stats automatically generated? > > Perhaps it would be a good idea to switch to an RDBMS that is more > multi-user-friendly. Gerhard, is your offer to do this still open? Yes, I'd be glad to add this capability to PyPI. It'd help me a little if you could send me a dump of the current database, but it's not strictly necessary as I could create random test data myself. > The > backend of pypi is all in the store module, and it's quite simple. It'll > probably work out of the box on postgresql/mysql. From a cursory look, it wouldn't be much work. Once PyPI is more heavily used, we might also want to get away from the dependency on CGI, using something like Quixote (which can run under Apache using SCGI/mod_python or standalone with a Medusa or Twisted backend, and it can run as plain CGI as well). But first things first. -- Gerhard From mcfletch@rogers.com Mon Apr 28 07:13:25 2003 From: mcfletch@rogers.com (Mike C. Fletcher) Date: Mon, 28 Apr 2003 02:13:25 -0400 Subject: [Catalog-sig] Questions regarding PyPi usage (user feedback) Message-ID: <3EACC685.4090305@rogers.com> In beginning to use PyPi this evening I've come up with a set of questions that I'd guess will be commonly asked when people start using the engine, as I've had them myself (I've also tried to glean the answers and add them after the questions): * What should the keyword format be? o Comma-separated list of keywords o Nice to have sample on the input page or in a tutorial to give an idea of desired length, format and depth, for instance, here's what I'm planning for PyOpenGL: + 'Graphics,3D,OpenGL,GLU,GLUT,GLE,GLX,WGL,TOGL,EXT,ARB,Mesa' * What should the classifiers format be? o Python list of SourceForge-style classifier strings. o How does one specify this in a .cfg file? + I assume as a set of multiple key=value sets? * Boilerplate code for determining download URL for SourceForge? o This seems to be used as "a website from which you can download", rather than a URL to a package which can be downloaded. Is there another attribute which means e.g. (URL from which to download binary Python 2.2 Win32 package)? + It would require some internal knowledge of distutils to determine what the final filename will be for a particular version, then some code to create the download URL from that information, and that would be best done by someone who knows distutils. * What is the definition of "maintainer" vs. "author" (in PyPi) vs. "packager" (used elsewhere in distutils world IIRC)? o Author -- copyright holder(s)? o Maintainer -- current developers? o Packager -- one who takes source to build binary for package, but is neither author nor maintainer? * How does one test for format and completeness without attempting to register the package? o Is there a scrub-server? A flag to say "just testing"? o It looks as though test is done before running register. o Don't see a "testing" flag in quick scan. * How does one specify Python version for a particular package (i.e. built for Python 2.2, but not 1.5.2)? o You don't. * How does one include a public key signature for a package? o You don't as-of-yet. * How does one specify format (e.g. Src .zip, Src .tgz, Binary, Src RPM, etceteras) o You don't. Anyway, that's all the questions I've had so far this evening. Thanks all for working on the project. Hope this was helpful in some way, Mike _______________________________________ Mike C. Fletcher Designer, VR Plumber, Coder http://members.rogers.com/mcfletch/ From richardjones@optushome.com.au Mon Apr 28 13:09:01 2003 From: richardjones@optushome.com.au (Richard Jones) Date: Mon, 28 Apr 2003 22:09:01 +1000 Subject: [Catalog-sig] Questions regarding PyPi usage (user feedback) In-Reply-To: <3EACC685.4090305@rogers.com> References: <3EACC685.4090305@rogers.com> Message-ID: <200304282209.06510.richardjones@optushome.com.au> --Boundary-02=_inRr+MI6RS5flwP Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Description: signed data Content-Disposition: inline On Monday 28 April 2003 04:13 pm, Mike C. Fletcher wrote: > * What should the keyword format be? > o Comma-separated list of keywords > o Nice to have sample on the input page or in a tutorial to > give an idea of desired length, format and depth, for > instance, here's what I'm planning for PyOpenGL: > + > 'Graphics,3D,OpenGL,GLU,GLUT,GLE,GLX,WGL,TOGL,EXT,ARB,Mesa' Undefined. At the moment, you'll get a substring seach based on the terms y= ou=20 enter in the search page. Nothing has been implemented beyond that. To be=20 honest, I'm not sure the keywords make sense in a classifiers world, but=20 classifiers are too new to just throw out keywords yet. You'll note that=20 "keywords" isn't mentioned in the current development documentation any mor= e. To balance this, the list of classifiers is completely under our control.=20 Package authors simply need to ask for new classifiers to be added if they'= re=20 needed. This is not stated anywhere though, and needs to be... ideas? > * What should the classifiers format be? > o Python list of SourceForge-style classifier strings. http://www.python.org/dev/doc/devel/dist/setup-script.html#SECTION000360000= 000000000000 > o How does one specify this in a .cfg file? > + I assume as a set of multiple key=3Dvalue sets? I have no idea. I've never used one :) > * Boilerplate code for determining download URL for SourceForge? > o This seems to be used as "a website from which you can > download", rather than a URL to a package which can be > downloaded. Is there another attribute which means e.g. > (URL from which to download binary Python 2.2 Win32 package)? > + It would require some internal knowledge of distutils > to determine what the final filename will be for a > particular version, then some code to create the > download URL from that information, and that would be > best done by someone who knows distutils. The whole issue of download URL is a big question that has yet to be answer= ed.=20 As far as I'm concerned, the download URL can mean whatever the package=20 author wants it to mean. Until we have some automatic download/install syst= em=20 in place, that's all it _can_ be. Mostly the attribute was added in this release so that it was in place and= =20 pepole started asking questions about it (and hopefully someone finishes of= f=20 one of the many auto-download/install implementations out there :) > * What is the definition of "maintainer" vs. "author" (in PyPi) vs. > "packager" (used elsewhere in distutils world IIRC)? > o Author -- copyright holder(s)? > o Maintainer -- current developers? > o Packager -- one who takes source to build binary for > package, but is neither author nor maintainer? See http://www.python.org/dev/doc/devel/dist/package-index.html in the seco= nd=20 last paragraph for a description of what Owner and Maintainer mean in PyPI= =20 land. Definitely quite separate from Author and Packager. Well, I think the= y=20 are... > * How does one test for format and completeness without attempting > to register the package? > o Is there a scrub-server? A flag to say "just testing"? Use the "--dry-run" option that most (all?) setup commands support: python setup.py register --dry-run > * How does one specify Python version for a particular package (i.e. > built for Python 2.2, but not 1.5.2)? > o You don't. > * How does one include a public key signature for a package? > o You don't as-of-yet. These responses are correct. > * How does one specify format (e.g. Src .zip, Src .tgz, Binary, Src > RPM, etceteras) > o You don't. This is correct, and I'm not sure it's in the scope of PyPI - possibly in t= he=20 yet-to-be-implemented download/install functionality. Richard ps. it's late, I'm tired, I hope I've answered your questions adequately :) --Boundary-02=_inRr+MI6RS5flwP Content-Type: application/pgp-signature Content-Description: signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQA+rRnirGisBEHG6TARAvDsAJ4rLqve7C1S47dhF+wUQ7eferTsxQCbBsTA 3qu4gN2Se6gwoOvMq230jNs= =U41O -----END PGP SIGNATURE----- --Boundary-02=_inRr+MI6RS5flwP-- From akuchlin@mems-exchange.org Tue Apr 29 18:17:48 2003 From: akuchlin@mems-exchange.org (Andrew Kuchling) Date: Tue, 29 Apr 2003 13:17:48 -0400 Subject: [Catalog-sig] Re: PEP 314: Updating the package metadata format In-Reply-To: References: <20030412131123.GA20645@nyman.amk.ca> Message-ID: <20030429171748.GA8652@ute.mems-exchange.org> On Wed, Apr 23, 2003 at 07:57:39PM +0200, Thomas Heller wrote: >(see my embedded comments) Changes applied to PEP 314; thanks! >I have a use case for Conflicts with version numbers. >ctypes was a couple of modules up to version 0.4.x, and is a package >starting with 0.6.x. Another piece of evidence: according to http://www.rpm.org/max-rpm/s1-rpm-depend-manual-dependencies.html, RPM supports version numbers in the Conflicts header. Current versions of RPM also support versions in the Obsoletes header, so I've changed PEP 314 to do the same. --amk From akuchlin@mems-exchange.org Tue Apr 29 18:36:48 2003 From: akuchlin@mems-exchange.org (Andrew Kuchling) Date: Tue, 29 Apr 2003 13:36:48 -0400 Subject: [Catalog-sig] PEP 314: latest draft Message-ID: Here's the current draft of PEP 314. A number of XXX comments have been removed; version declarations can now be included in the Conflicts and Obsoletes fields; the Classifiers field from PEP 301 is now included. An open issue: with the addition of Classifiers, should the Platforms and License fields be deprecated and/or removed? (My vote is to remove Platforms and License, ignoring them when they're supplied to distutils.core.setup(), and warning the user when they run "sdist" and those keywords are supplied.) --amk PEP: 314 Title: Metadata for Python Software Packages v1.1 Version: $Revision: 1.8 $ Last-Modified: $Date: 2003/04/29 17:31:16 $ Author: A.M. Kuchling Status: Draft Type: Standards Track Content-type: text/plain Created: 12-Apr-2003 Python-Version: 2.3 Post-History: 29-Apr-2003 Replaces: 243 Introduction This PEP describes a mechanism for adding metadata to Python packages. It includes specifics of the field names, and their semantics and usage. This document specifies version 1.1 of the metadata format. Version 1.0 is specified in PEP 241. Including Metadata in Packages The Distutils 'sdist' command will extract the metadata fields from the arguments and write them to a file in the generated zipfile or tarball. This file will be named PKG-INFO and will be placed in the top directory of the source distribution (where the README, INSTALL, and other files usually go). Developers may not provide their own PKG-INFO file. The "sdist" command will, if it detects an existing PKG-INFO file, terminate with an appropriate error message. This should prevent confusion caused by the PKG-INFO and setup.py files being out of sync. The PKG-INFO file format is a single set of RFC-822 headers parseable by the rfc822.py module. The field names listed in the following section are used as the header names. There's no extension mechanism in this simple format; the Catalog and Distutils SIGs will aim at getting a more flexible format ready for Python 2.2. Fields This section specifies the names and semantics of each of the supported metadata fields. Fields marked with "(Multiple use)" may be specified multiple times in a single PKG-INFO file. Other fields may only occur once in a PKG-INFO file. Fields marked with "(optional)" are not required to appear in a valid PKG-INFO file, all other fields must be present. Metadata-Version Version of the file format; currently "1.0" and "1.1" are the only legal values here. Example: Metadata-Version: 1.1 Name The name of the package. Example: Name: BeagleVote Version A string containing the package's version number. This field should be parseable by one of the Version classes (StrictVersion or LooseVersion) in the distutils.version module. Example: Version: 1.0a2 Platform (multiple use) A comma-separated list of platform specifications, summarizing the operating systems supported by the package. The major supported platforms are listed below, but this list is necessarily incomplete. POSIX, MacOS, Windows, BeOS, PalmOS. Binary distributions will use the Supported-Platform field in their metadata to specify the OS and CPU for which the binary package was compiled. The semantics of the Supported-Platform are not specified in this PEP. Example: Platform: POSIX, Windows Summary A one-line summary of what the package does. Example: Summary: A module for collecting votes from beagles. Description (optional) A longer description of the package that can run to several paragraphs. (Software that deals with metadata should not assume any maximum size for this field, though one hopes that people won't include their instruction manual as the long-description.) Example: Description: This module collects votes from beagles in order to determine their electoral wishes. Do NOT try to use this module with basset hounds; it makes them grumpy. Keywords (optional) A list of additional keywords to be used to assist searching for the package in a larger catalog. Example: Keywords: dog puppy voting election Home-page (optional) A string containing the URL for the package's home page. Example: Home-page: http://www.example.com/~cschultz/bvote/ Author (optional) A string containing at a minimum the author's name. Contact information can also be added, separating each line with newlines. Example: Author: C. Schultz Universal Features Syndicate Los Angeles, CA Author-email A string containing the author's e-mail address. It can contain a name and e-mail address in the legal forms for a RFC-822 'From:' header. It's not optional because cataloging systems can use the e-mail portion of this field as a unique key representing the author. A catalog might provide authors the ability to store their GPG key, personal home page, and other additional metadata *about the author*, and optionally the ability to associate several e-mail addresses with the same person. Author-related metadata fields are not covered by this PEP. Example: Author-email: "C. Schultz" License A string selected from a short list of choices, specifying the license covering the package. Some licenses result in the software being freely redistributable, so packagers and resellers can automatically know that they're free to redistribute the software. Other licenses will require a careful reading by a human to determine how the software can be repackaged and resold. The choices are: Artistic, BSD, DFSG, GNU GPL, GNU LGPL, "MIT", Mozilla PL, "public domain", Python, Qt PL, Zope PL, unknown, nocommercial, nosell, nosource, shareware, other Definitions of some of the licenses are: DFSG The license conforms to the Debian Free Software Guidelines, but does not use one of the other DFSG conforming licenses listed here. More information is available at: http://www.debian.org/social_contract#guidelines Python Python 1.6 or higher license. Version 1.5.2 and earlier are under the MIT license. public domain Software is public domain, not copyrighted. unknown Status is not known nocommercial Free private use but commercial use not permitted nosell Free use but distribution for profit by arrangement nosource Freely distributable but no source code shareware Payment is requested if software is used other General category for other non-DFSG licenses Some of these licenses can be interpreted to mean the software is freely redistributable. The list of redistributable licenses is: Artistic, BSD, DFSG, GNU GPL, GNU LGPL, "MIT", Mozilla PL, "public domain", Python, Qt PL, Zope PL, nosource, shareware Note that being redistributable does not mean a package qualifies as free software, 'nosource' and 'shareware' being examples. Example: License: MIT Classifier (multiple use) Each entry is a string giving a single classification value for the package. Classifiers are described in PEP 301 [1]. Examples: Classifier: Development Status :: 4 - Beta Classifier: Environment :: Console (Text Based) Requires (multiple use) Each entry contains a string describing some other component or module required by this package. The format of a requirement string is simple: an arbitrary sequence of characters, optionally followed by a version declaration within parentheses. Leading and trailing whitespace are ignored, and whitespace within the string is normalized to a single space. A version declaration is a series of conditional operators and version numbers, separated by commas. Conditional operators must be one of "<", ">", "<=", ">=", "==", and "!=". Version numbers must be in the format accepted by the distutils.version.StrictVersion class: two or three dot-separated numeric components, with an optional "pre-release" tag on the end consisting of the letter 'a' or 'b' followed by a number. Example version numbers are "1.0", "2.3a2", "1.3.99", Any number of conditional operators can be specified, e.g. the string ">1.0, !=1.3.4, <2.0" is a legal version declaration. All of the following are possible requirement strings: "rfc822", "zlib (>=1.1.4)", "XML parser". There's no canonical list of what strings should be used; the Python community is left to choose its own standards. Example: Requires: re Requires: sys Requires: zlib Requires: pyexpat (>1.0) Requires: DB-API 2.0 module Provides (multiple use) Each entry contains a string describing a component or module that will be provided by this package once it is installed. These strings should match the ones used in Requirements fields. Version declarations cannot be supplied; instead the package's version number will be used. Example: Provides: xml Provides: xml.utils Provides: xml.utils.iso8601 Provides: xml.dom Obsoletes (multiple use) Each entry contains a string describing a component or module that this package renders obsolete, meaning that the two packages should not be installed at the same time. Version declarations can be supplied. The most common use of this field will be in case a package name changes, e.g. Gorgon 2.3 gets subsumed into Torqued Python 1.0. When you install Torqued Python, the Gorgon package should be removed. Example: Obsoletes: Gorgon Conflicts (multiple use) Each entry contains a string describing a component or module that conflicts with this package, meaning that the two packages should not be installed at the same time. Version declarations can be supplied. Conflict resolution probably isn't very important for Python programs, because few extensions will cause problems for other extensions, unless they happen to be using the same package name. This field name is being defined here for future use. Conflicts: Gorgon Summary of Differences From PEP 241 * Metadata-Version is now 1.1. * Added the Classifiers field from PEP 301. * Added fields: Requires, Provides, Obsoletes, Conflicts. Open issues With the addition of the 'Classifiers' field, should the Platform and License fields be removed? Acknowledgements None yet. References [1] PEP 301 http://www.python.org/peps/pep-0301.html Copyright This document has been placed in the public domain. From richardjones@optushome.com.au Tue Apr 29 23:07:37 2003 From: richardjones@optushome.com.au (Richard Jones) Date: Wed, 30 Apr 2003 08:07:37 +1000 Subject: [Catalog-sig] PEP 314: latest draft In-Reply-To: References: Message-ID: <200304300807.37255.richardjones@optushome.com.au> --Boundary-02=_pevr+VZq0cMS37J Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Description: signed data Content-Disposition: inline On Wednesday 30 April 2003 03:36 am, Andrew Kuchling wrote: > An open issue: with the addition of Classifiers, should the > Platforms and License fields be deprecated and/or removed? >=20 > (My vote is to remove Platforms and License, ignoring them when > they're supplied to distutils.core.setup(), and warning the user when > they run "sdist" and those keywords are supplied.) I've had instances where users have included the entirety of their license = in=20 the license field. The question is whether that's appropriate. I also vote= =20 for removing Platforms and License. It also seems strange that the PKG-INFO format it described even though tha= t's=20 not the human-editable version. It would seem to be a good idea to at least= =20 describe the format of the input data (ie. setup.cfg and setup.py). > The PKG-INFO file format is a single set of RFC-822 headers > parseable by the rfc822.py module. The field names listed in the > following section are used as the header names. There's no > extension mechanism in this simple format; the Catalog and Distutils > SIGs will aim at getting a more flexible format ready for Python 2.2. Really? :) > Description (optional) > > A longer description of the package that can run to several > paragraphs. (Software that deals with metadata should not > assume any maximum size for this field, though one hopes that > people won't include their instruction manual as the > long-description.) I believe we should ask for adherence to the ReST format here. Simple=20 paragraphs for most descriptions and use of ReST formatting if you want to= =20 get fancy. At the moment I'm
 formatting the description in PyPI becau=
se=20
I don't know whether I can trust the input data.


>     Home-page (optional)
>
>       A string containing the URL for the package's home page.
>
>       Example:
>
>           Home-page: http://www.example.com/~cschultz/bvote/

Download URL?


>     Author (optional)
>
>       A string containing at a minimum the author's name.  Contact
>       information can also be added, separating each line with
>       newlines.
>
>       Example:
>
>           Author: C. Schultz
>                   Universal Features Syndicate
>                   Los Angeles, CA

PyPI will have to be modified to handle this spec :)



    Richard

--Boundary-02=_pevr+VZq0cMS37J
Content-Type: application/pgp-signature
Content-Description: signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)

iD8DBQA+rveprGisBEHG6TARAmKcAJ9K38hESr3dzfaZVPfBBsweMsZYwQCdEzxO
oR20R0cj8sM/McuqrZjeVS4=
=7R5c
-----END PGP SIGNATURE-----

--Boundary-02=_pevr+VZq0cMS37J--



From acapnotic@twistedmatrix.com  Wed Apr 30 01:14:05 2003
From: acapnotic@twistedmatrix.com (Kevin Turner)
Date: 29 Apr 2003 17:14:05 -0700
Subject: [Catalog-sig] PEP 314: latest draft
In-Reply-To: 
References: 
Message-ID: <1051661643.28927.882.camel@troglodyte.funhouse>

--=-p9Lgz16q1unbkygQqKbS
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

On Tue, 2003-04-29 at 10:36, Andrew Kuchling wrote:
> An open issue: with the addition of Classifiers, should the=20
> Platforms and License fields be deprecated and/or removed? =20

Since License is not optional, it might be good to retain it explicitly
in the interface.  Otherwise you either end up distributing packages
without a stated license (which is bad), or you have to screen the list
of Classifiers for required elements.  The documentation for Classifiers
becomes more complicated as well, "multiple use but must include at
least one of ..."

You could recommend that the value used for the License field be the
final part of a 'License ::' classifier, for easy mapping between the
two.

--=20
The moon is waning crescent, 3.0% illuminated, 27.9 days old.

--=-p9Lgz16q1unbkygQqKbS
Content-Type: application/pgp-signature; name=signature.asc
Content-Description: This is a digitally signed message part

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)

iD8DBQA+rxVKh3hqIoukqUQRAjTcAJ9D8hqSYYoHh0oa5fO6fVCgsDX9PwCfdbSx
3zYlg8Rat5GZfamzBxohHfs=
=kT2c
-----END PGP SIGNATURE-----

--=-p9Lgz16q1unbkygQqKbS--