From python-checkins at python.org Fri Mar 5 21:02:56 2010 From: python-checkins at python.org (martin.von.loewis) Date: Fri, 5 Mar 2010 21:02:56 +0100 (CET) Subject: [Pypi-checkins] r737 - trunk/pypi/templates Message-ID: <20100305200256.3DB64FB07@mail.python.org> Author: martin.von.loewis Date: Fri Mar 5 21:02:56 2010 New Revision: 737 Modified: trunk/pypi/templates/standard_template.pt Log: Link docutils.css. Modified: trunk/pypi/templates/standard_template.pt ============================================================================== --- trunk/pypi/templates/standard_template.pt (original) +++ trunk/pypi/templates/standard_template.pt Fri Mar 5 21:02:56 2010 @@ -19,6 +19,7 @@ + From python-checkins at python.org Tue Mar 9 00:23:12 2010 From: python-checkins at python.org (martin.von.loewis) Date: Tue, 9 Mar 2010 00:23:12 +0100 (CET) Subject: [Pypi-checkins] r738 - trunk/pypi Message-ID: <20100308232312.2E713FA66@mail.python.org> Author: martin.von.loewis Date: Tue Mar 9 00:23:11 2010 New Revision: 738 Modified: trunk/pypi/webui.py Log: Add releases link, per request from Tres Seaver on catalog-sig. Modified: trunk/pypi/webui.py ============================================================================== --- trunk/pypi/webui.py (original) +++ trunk/pypi/webui.py Tue Mar 9 00:23:11 2010 @@ -1100,11 +1100,12 @@ url = '%s?name=%s&version=%s'%(self.url_path, un, uv) return '''

Package: admin | + releases | view | edit | files | PKG-INFO -

'''%(self.url_path, un, url, url, url, url) +

'''%(self.url_path, un, self.url_path, un, url, url, url, url) def quote_plus(self, data): return urllib.quote_plus(data) From python-checkins at python.org Thu Mar 11 22:25:32 2010 From: python-checkins at python.org (martin.von.loewis) Date: Thu, 11 Mar 2010 22:25:32 +0100 (CET) Subject: [Pypi-checkins] r739 - trunk/pypi/templates Message-ID: <20100311212532.DCC4DC69F@mail.python.org> Author: martin.von.loewis Date: Thu Mar 11 22:25:32 2010 New Revision: 739 Modified: trunk/pypi/templates/standard_template.pt Log: Issue 2906878: make "your packages" list scrollable. Modified: trunk/pypi/templates/standard_template.pt ============================================================================== --- trunk/pypi/templates/standard_template.pt (original) +++ trunk/pypi/templates/standard_template.pt Thu Mar 11 22:25:32 2010 @@ -106,7 +106,7 @@ -
+

Not Logged In

@@ -136,21 +136,16 @@
  • - Your packages(truncated): + Your packages:
  • From python-checkins at python.org Sat Mar 13 23:19:56 2010 From: python-checkins at python.org (tarek.ziade) Date: Sat, 13 Mar 2010 23:19:56 +0100 (CET) Subject: [Pypi-checkins] r740 - branches/tarek-pep-345-support Message-ID: <20100313221956.044DCF9A5@mail.python.org> Author: tarek.ziade Date: Sat Mar 13 23:19:55 2010 New Revision: 740 Added: branches/tarek-pep-345-support/ - copied from r739, trunk/pypi/ Log: branch for PEP 345 support From python-checkins at python.org Sat Mar 13 23:57:36 2010 From: python-checkins at python.org (tarek.ziade) Date: Sat, 13 Mar 2010 23:57:36 +0100 (CET) Subject: [Pypi-checkins] r741 - in branches/tarek-pep-345-support: . tools Message-ID: <20100313225736.BBF72DEA5@mail.python.org> Author: tarek.ziade Date: Sat Mar 13 23:57:36 2010 New Revision: 741 Added: branches/tarek-pep-345-support/tools/sql-migrate-20100313.sql Modified: branches/tarek-pep-345-support/pkgbase_schema.sql Log: added new tables for PEP 345 Modified: branches/tarek-pep-345-support/pkgbase_schema.sql ============================================================================== --- branches/tarek-pep-345-support/pkgbase_schema.sql (original) +++ branches/tarek-pep-345-support/pkgbase_schema.sql Sat Mar 13 23:57:36 2010 @@ -149,7 +149,6 @@ ); CREATE INDEX release_pypi_hidden_idx ON releases(_pypi_hidden); - -- Table structure for table: trove_classifiers -- l2, l3, l4, l5 is the corresponding parent; -- 0 if there is no parent on that level (each node is its @@ -219,6 +218,71 @@ CREATE INDEX rel_obs_version_id_idx ON release_obsoletes(version); CREATE INDEX rel_obs_name_version_idx ON release_obsoletes (name,version); +-- Table structure for table: release_requires_python +CREATE TABLE release_requires_python ( + name TEXT, + version TEXT, + specifier TEXT, + FOREIGN KEY (name, version) REFERENCES releases (name, version) ON UPDATE CASCADE +); +CREATE INDEX rel_req_python_name_idx ON release_requires_python(name); +CREATE INDEX rel_req_python_version_id_idx ON release_requires_python(version); +CREATE INDEX rel_req_python_name_version_idx ON release_requires_python(name,version); + +-- Table structure for table: release_requires_external +CREATE TABLE release_requires_external ( + name TEXT, + version TEXT, + specifier TEXT, + FOREIGN KEY (name, version) REFERENCES releases (name, version) ON UPDATE CASCADE +); +CREATE INDEX rel_req_ext_name_idx ON release_requires_external(name); +CREATE INDEX rel_req_ext_version_id_idx ON release_requires_external(version); +CREATE INDEX rel_req_ext_name_version_idx ON release_requires_external(name,version); + +-- Table structure for table: release_requires_dist +CREATE TABLE release_requires_dist ( + name TEXT, + version TEXT, + specifier TEXT, + FOREIGN KEY (name, version) REFERENCES releases (name, version) ON UPDATE CASCADE +); +CREATE INDEX rel_req_dist_name_idx ON release_requires_dist(name); +CREATE INDEX rel_req_dist_version_id_idx ON release_requires_dist(version); +CREATE INDEX rel_req_dist_name_version_idx ON release_requires_dist(name,version); + +-- Table structure for table: release_provides_dist +CREATE TABLE release_provides_dist ( + name TEXT, + version TEXT, + specifier TEXT, + FOREIGN KEY (name, version) REFERENCES releases (name, version) ON UPDATE CASCADE +); +CREATE INDEX rel_prov_dist_name_idx ON release_provides_dist(name); +CREATE INDEX rel_prov_dist_version_id_idx ON release_provides_dist(version); +CREATE INDEX rel_prov_dist_name_version_idx ON release_provides_dist(name,version); + +-- Table structure for table: release_obsoletes_dist +CREATE TABLE release_obsoletes_dist ( + name TEXT, + version TEXT, + specifier TEXT, + FOREIGN KEY (name, version) REFERENCES releases (name, version) ON UPDATE CASCADE +); +CREATE INDEX rel_obs_dist_name_idx ON release_obsoletes_dist(name); +CREATE INDEX rel_obs_dist_version_id_idx ON release_obsoletes_dist(version); +CREATE INDEX rel_obs_dist_name_version_idx ON release_obsoletes_dist(name,version); + +-- Table structure for table: release_project_url +CREATE TABLE release_project_url ( + name TEXT, + version TEXT, + specifier TEXT, + FOREIGN KEY (name, version) REFERENCES releases (name, version) ON UPDATE CASCADE +); +CREATE INDEX rel_proj_url_name_idx ON release_project_url(name); +CREATE INDEX rel_proj_url_version_id_idx ON release_project_url(version); +CREATE INDEX rel_proj_url_name_version_idx ON release_project_url(name,version); -- Table structure for table: package_files -- python version is only first two digits Added: branches/tarek-pep-345-support/tools/sql-migrate-20100313.sql ============================================================================== --- (empty file) +++ branches/tarek-pep-345-support/tools/sql-migrate-20100313.sql Sat Mar 13 23:57:36 2010 @@ -0,0 +1,71 @@ +-- +-- New tables +-- + +-- Table structure for table: release_requires_python +CREATE TABLE release_requires_python ( + name TEXT, + version TEXT, + specifier TEXT, + FOREIGN KEY (name, version) REFERENCES releases (name, version) ON UPDATE CASCADE +); +CREATE INDEX rel_req_python_name_idx ON release_requires_python(name); +CREATE INDEX rel_req_python_version_id_idx ON release_requires_python(version); +CREATE INDEX rel_req_python_name_version_idx ON release_requires_python(name,version); + +-- Table structure for table: release_requires_external +CREATE TABLE release_requires_external ( + name TEXT, + version TEXT, + specifier TEXT, + FOREIGN KEY (name, version) REFERENCES releases (name, version) ON UPDATE CASCADE +); +CREATE INDEX rel_req_ext_name_idx ON release_requires_external(name); +CREATE INDEX rel_req_ext_version_id_idx ON release_requires_external(version); +CREATE INDEX rel_req_ext_name_version_idx ON release_requires_external(name,version); + +-- Table structure for table: release_requires_dist +CREATE TABLE release_requires_dist ( + name TEXT, + version TEXT, + specifier TEXT, + FOREIGN KEY (name, version) REFERENCES releases (name, version) ON UPDATE CASCADE +); +CREATE INDEX rel_req_dist_name_idx ON release_requires_dist(name); +CREATE INDEX rel_req_dist_version_id_idx ON release_requires_dist(version); +CREATE INDEX rel_req_dist_name_version_idx ON release_requires_dist(name,version); + +-- Table structure for table: release_provides_dist +CREATE TABLE release_provides_dist ( + name TEXT, + version TEXT, + specifier TEXT, + FOREIGN KEY (name, version) REFERENCES releases (name, version) ON UPDATE CASCADE +); +CREATE INDEX rel_prov_dist_name_idx ON release_provides_dist(name); +CREATE INDEX rel_prov_dist_version_id_idx ON release_provides_dist(version); +CREATE INDEX rel_prov_dist_name_version_idx ON release_provides_dist(name,version); + +-- Table structure for table: release_obsoletes_dist +CREATE TABLE release_obsoletes_dist ( + name TEXT, + version TEXT, + specifier TEXT, + FOREIGN KEY (name, version) REFERENCES releases (name, version) ON UPDATE CASCADE +); +CREATE INDEX rel_obs_dist_name_idx ON release_obsoletes_dist(name); +CREATE INDEX rel_obs_dist_version_id_idx ON release_obsoletes_dist(version); +CREATE INDEX rel_obs_dist_name_version_idx ON release_obsoletes_dist(name,version); + +-- Table structure for table: release_project_url +CREATE TABLE release_project_url ( + name TEXT, + version TEXT, + specifier TEXT, + FOREIGN KEY (name, version) REFERENCES releases (name, version) ON UPDATE CASCADE +); +CREATE INDEX rel_proj_url_name_idx ON release_project_url(name); +CREATE INDEX rel_proj_url_version_id_idx ON release_project_url(version); +CREATE INDEX rel_proj_url_name_version_idx ON release_project_url(name,version); + + From python-checkins at python.org Sun Mar 14 16:20:07 2010 From: python-checkins at python.org (tarek.ziade) Date: Sun, 14 Mar 2010 16:20:07 +0100 (CET) Subject: [Pypi-checkins] r742 - branches/tarek-pep-345-support Message-ID: <20100314152007.1620CF98F@mail.python.org> Author: tarek.ziade Date: Sun Mar 14 16:20:06 2010 New Revision: 742 Modified: branches/tarek-pep-345-support/pkgbase_schema.sql Log: fixed all mistakes in the script so it actually works to create a DB from scratch Modified: branches/tarek-pep-345-support/pkgbase_schema.sql ============================================================================== --- branches/tarek-pep-345-support/pkgbase_schema.sql (original) +++ branches/tarek-pep-345-support/pkgbase_schema.sql Sun Mar 14 16:20:06 2010 @@ -1,10 +1,10 @@ -- Table structure for table: users -CREATE TABLE users ( - name TEXT PRIMARY KEY, - password TEXT, - email TEXT, +CREATE TABLE users ( + name TEXT PRIMARY KEY, + password TEXT, + email TEXT, gpg_keyid TEXT, - last_login TIMESTAMP, + last_login TIMESTAMP ); CREATE INDEX users_email_idx ON users(email); @@ -12,7 +12,7 @@ CREATE TABLE openids ( id TEXT PRIMARY KEY, - name TEXT REFERENCES users, + name TEXT REFERENCES users ); CREATE TABLE openid_sessions ( @@ -41,7 +41,7 @@ CREATE TABLE cookies ( cookie text PRIMARY KEY, name text references users, - last_seen timestamp, + last_seen timestamp ); CREATE INDEX cookies_last_seen ON cookies(last_seen); @@ -122,7 +122,7 @@ -- Table structure for table: releases -CREATE TABLE releases ( +CREATE TABLE releases ( name TEXT REFERENCES packages ON UPDATE CASCADE, version TEXT, author TEXT, @@ -142,9 +142,6 @@ cheesecake_code_kwalitee_id INTEGER REFERENCES cheesecake_main_indices, _pypi_ordering INTEGER, _pypi_hidden BOOLEAN, - cheesecake_installability_id INTEGER REFERENCES cheesecake_main_indices, - cheesecake_documentation_id INTEGER REFERENCES cheesecake_main_indices, - cheesecake_code_kwalitee_id INTEGER REFERENCES cheesecake_main_indices, PRIMARY KEY (name, version) ); CREATE INDEX release_pypi_hidden_idx ON releases(_pypi_hidden); @@ -153,7 +150,7 @@ -- l2, l3, l4, l5 is the corresponding parent; -- 0 if there is no parent on that level (each node is its -- own parent) -CREATE TABLE trove_classifiers ( +CREATE TABLE trove_classifiers ( id INTEGER PRIMARY KEY, classifier TEXT UNIQUE, l2 INTEGER, @@ -371,7 +368,7 @@ in_reply_to INTEGER REFERENCES comments ON DELETE CASCADE ); CREATE TABLE ratings( - id SERIAL UNIQUE; + id SERIAL UNIQUE, name TEXT, version TEXT, user_name TEXT REFERENCES users ON DELETE CASCADE, From python-checkins at python.org Sun Mar 14 16:20:55 2010 From: python-checkins at python.org (tarek.ziade) Date: Sun, 14 Mar 2010 16:20:55 +0100 (CET) Subject: [Pypi-checkins] r743 - branches/tarek-pep-345-support Message-ID: <20100314152055.65249DF1E@mail.python.org> Author: tarek.ziade Date: Sun Mar 14 16:20:55 2010 New Revision: 743 Modified: branches/tarek-pep-345-support/README Log: explains how to create an isolated environment Modified: branches/tarek-pep-345-support/README ============================================================================== --- branches/tarek-pep-345-support/README (original) +++ branches/tarek-pep-345-support/README Sun Mar 14 16:20:55 2010 @@ -1,13 +1,21 @@ - Required packages ----------------------- +----------------- + +To run the PyPI software, you need PostgreSQL, and all +these packages located at PyPI: + +- cElementTree +- zope.interface +- zope.pagetemplate +- zope.tal +- zope.tales +- zope.i18nmessageid +- psycopg2 +- M2Crypto + +You can create a development environment like this, if you +have virtualenv installed:: + + $ virtualenv --no-site-packages --distribute . + $ bin/easy_install cElementTree zope.interface zope.pagetemplate zope.tal zope.tales zope.i18nmessageid psycopg2 M2Crypto -To run the PyPI software, you need: - cElementTree - zope.interface (in PyPI) - zope.pagetemplates (in PyPI) - zope.tal - zope.tales - zope.i18nmessageid - psycopg2 and PostgreSQL - M2Crypto From python-checkins at python.org Wed Mar 17 03:02:54 2010 From: python-checkins at python.org (tarek.ziade) Date: Wed, 17 Mar 2010 03:02:54 +0100 (CET) Subject: [Pypi-checkins] r744 - branches/tarek-pep-345-support Message-ID: <20100317020254.668FAFA0E@mail.python.org> Author: tarek.ziade Date: Wed Mar 17 03:02:54 2010 New Revision: 744 Modified: branches/tarek-pep-345-support/README Log: beautifulsoup is required too Modified: branches/tarek-pep-345-support/README ============================================================================== --- branches/tarek-pep-345-support/README (original) +++ branches/tarek-pep-345-support/README Wed Mar 17 03:02:54 2010 @@ -12,10 +12,11 @@ - zope.i18nmessageid - psycopg2 - M2Crypto +- BeautifulSoup You can create a development environment like this, if you have virtualenv installed:: $ virtualenv --no-site-packages --distribute . - $ bin/easy_install cElementTree zope.interface zope.pagetemplate zope.tal zope.tales zope.i18nmessageid psycopg2 M2Crypto + $ bin/easy_install cElementTree zope.interface zope.pagetemplate zope.tal zope.tales zope.i18nmessageid psycopg2 M2Crypto BeautifulSoup From python-checkins at python.org Wed Mar 17 03:04:10 2010 From: python-checkins at python.org (tarek.ziade) Date: Wed, 17 Mar 2010 03:04:10 +0100 (CET) Subject: [Pypi-checkins] r745 - in branches/tarek-pep-345-support: . templates Message-ID: <20100317020410.03F82FA0E@mail.python.org> Author: tarek.ziade Date: Wed Mar 17 03:04:09 2010 New Revision: 745 Modified: branches/tarek-pep-345-support/store.py branches/tarek-pep-345-support/templates/display.pt branches/tarek-pep-345-support/templates/standard_template.pt branches/tarek-pep-345-support/webui.py Log: Added Matthieu work on PEP 345 UI Modified: branches/tarek-pep-345-support/store.py ============================================================================== --- branches/tarek-pep-345-support/store.py (original) +++ branches/tarek-pep-345-support/store.py Wed Mar 17 03:04:09 2010 @@ -656,6 +656,37 @@ safe_execute(cursor, 'update packages set autohide=%s where name=%s', [value, name]) + def get_package_requires_dist(self, name, version): + cursor = self.get_cursor() + safe_execute(cursor, '''select specifier from release_requires_dist + where name=%s and version=%s ''', (name, version)) + packages = [] + for package in cursor.fetchall(): + pack = {'name':package[0], + 'href' :"%s/%s"%(self.config.url, package[0])} + packages.append(pack) + return packages + + def get_package_provides_dist(self, name, version): + cursor = self.get_cursor() + safe_execute(cursor, '''select specifier from release_provides_dist + where name=%s and version=%s ''', (name, version)) + packages = [] + for package in cursor.fetchall(): + pack = {'name':package[0], + 'href' :"%s/%s"%(self.config.url, package[0])} + packages.append(pack) + return packages + + def get_package_project_url(self, name, version): + cursor = self.get_cursor() + safe_execute(cursor, '''select specifier from release_project_url + where name=%s and version=%s ''', (name, version)) + project_urls = [] + for project in cursor.fetchall(): + project_urls.append(project[0].split(',')) + return project_urls + def get_package_comments(self, name): cursor = self.get_cursor() safe_execute(cursor, 'select comments from packages where name=%s', Modified: branches/tarek-pep-345-support/templates/display.pt ============================================================================== --- branches/tarek-pep-345-support/templates/display.pt (original) +++ branches/tarek-pep-345-support/templates/display.pt Wed Mar 17 03:04:09 2010 @@ -156,6 +156,27 @@ + +
  • + Requires + +
  • + +
  • + Provides + +
  • +
  • Package Index Owner: Modified: branches/tarek-pep-345-support/templates/standard_template.pt ============================================================================== --- branches/tarek-pep-345-support/templates/standard_template.pt (original) +++ branches/tarek-pep-345-support/templates/standard_template.pt Wed Mar 17 03:04:09 2010 @@ -14,14 +14,111 @@ - - - - - - + + + + + + - + + + @@ -106,58 +203,73 @@
  • -
    - -

    Not Logged In

    - -
    - - - - - -

    Welcome

    -
  • - Your details -
  • +
    - - -
  • - Your packages: +
    + +

    Not Logged In

    + + - - - -
  • - Logout -
  • - + +
    +
    +
  • + Logout +
  • +
    + +
    +

    Project-URL

    +
      + +
    • + +
    • +
      +
    +
    +
    + +
    +

    Modified: branches/tarek-pep-345-support/webui.py ============================================================================== --- branches/tarek-pep-345-support/webui.py (original) +++ branches/tarek-pep-345-support/webui.py Wed Mar 17 03:04:09 2010 @@ -1211,7 +1211,7 @@ # Compute rating data has_rated = self.loggedin and self.store.has_rating(name, version) - latest_rating = self.loggedin and self.store.latest_rating(name) + latest_rating = self.loggedin and self.store.latest_rating(name) ratings, comments = self.store.get_ratings(name, version) total = 0.0 hcomments = [] # as a hierarchy @@ -1223,6 +1223,11 @@ total += r['rating'] tally[r['rating']] += 1 + # New metadata + requires_dist = self.store.get_package_requires_dist(name, version) + provides_dist = self.store.get_package_provides_dist(name, version) + project_url = self.store.get_package_project_url(name, version) + for c in comments: add = c, [] parent_comments[c['id']] = add[1] @@ -1288,7 +1293,10 @@ usinglatest=using_latest, latestversion=latest_version, latestversionurl=latest_version_url, - action=self.link_action()) + action=self.link_action(), + requires_dist=requires_dist, + provides_dist=provides_dist, + project_url=project_url) def index(self, nav_current='index', releases=None): ''' Print up an index page From python-checkins at python.org Wed Mar 17 03:27:38 2010 From: python-checkins at python.org (tarek.ziade) Date: Wed, 17 Mar 2010 03:27:38 +0100 (CET) Subject: [Pypi-checkins] r746 - branches/tarek-pep-345-support Message-ID: <20100317022738.EDEC1FA1E@mail.python.org> Author: tarek.ziade Date: Wed Mar 17 03:27:38 2010 New Revision: 746 Modified: branches/tarek-pep-345-support/README branches/tarek-pep-345-support/pypi.wsgi Log: make it simple to run pypi.wsgi, using wsgiref, and added more detail in README Modified: branches/tarek-pep-345-support/README ============================================================================== --- branches/tarek-pep-345-support/README (original) +++ branches/tarek-pep-345-support/README Wed Mar 17 03:27:38 2010 @@ -1,7 +1,7 @@ Required packages ----------------- -To run the PyPI software, you need PostgreSQL, and all +To run the PyPI software, you need PostgreSQL, and all these packages located at PyPI: - cElementTree @@ -10,13 +10,34 @@ - zope.tal - zope.tales - zope.i18nmessageid -- psycopg2 +- psycopg2 - M2Crypto - BeautifulSoup +- docutils -You can create a development environment like this, if you -have virtualenv installed:: +Quick development setup +----------------------- + +Make sure you read http://wiki.python.org/moin/CheeseShopDev#DevelopmentEnvironmentHints +and you have a working PostgreSQL DB. + +Make sure your config.ini is up-to-date. Change CONFIG_FILE at the begining +of pypi.wsgi, so it looks like this:: + + CONFIG_FILE = 'config.ini' + +Then, you can create a development environment like this, if you have +virtualenv installed:: $ virtualenv --no-site-packages --distribute . - $ bin/easy_install cElementTree zope.interface zope.pagetemplate zope.tal zope.tales zope.i18nmessageid psycopg2 M2Crypto BeautifulSoup + $ bin/easy_install cElementTree zope.interface zope.pagetemplate + $ bin/easy_install zope.tal zope.tales zope.i18nmessageid psycopg2 + $ bin/easy_install M2Crypto BeautifulSoup docutils + +Then you can launch the server using the pypi.wsgi script:: + + $ bin/python pypi.wsgi + Serving on port 8000... + +PyPI will be available in your browser at http://localhost:8000 Modified: branches/tarek-pep-345-support/pypi.wsgi ============================================================================== --- branches/tarek-pep-345-support/pypi.wsgi (original) +++ branches/tarek-pep-345-support/pypi.wsgi Wed Mar 17 03:27:38 2010 @@ -6,18 +6,21 @@ store.keep_conn = True +CONFIG_FILE = '/data/pypi/config.ini' + class Request: def __init__(self, environ, start_response): self.start_response = start_response - self.rfile = cStringIO.StringIO(environ['wsgi.input'].read()) + length = int(environ['CONTENT_LENGTH']) + self.rfile = cStringIO.StringIO(environ['wsgi.input'].read(length)) self.wfile = cStringIO.StringIO() - self.config = config.Config('/data/pypi/config.ini') - + self.config = config.Config(CONFIG_FILE ) + def send_response(self, code, message='no details available'): self.status = '%s %s' % (code, message) self.headers = [] - + def send_header(self, keyword, value): self.headers.append((keyword, value)) @@ -47,3 +50,11 @@ r = Request(environ, start_response) webui.WebUI(r, environ).run() return [r.wfile.getvalue()] + +if __name__ == '__main__': + # very simple wsgi server so we can play locally + from wsgiref.simple_server import make_server + httpd = make_server('', 8000, application) + print "Serving on port 8000..." + httpd.serve_forever() + From python-checkins at python.org Wed Mar 17 05:14:09 2010 From: python-checkins at python.org (tarek.ziade) Date: Wed, 17 Mar 2010 05:14:09 +0100 (CET) Subject: [Pypi-checkins] r747 - branches/tarek-pep-345-support Message-ID: <20100317041409.BAD6FFA77@mail.python.org> Author: tarek.ziade Date: Wed Mar 17 05:14:09 2010 New Revision: 747 Modified: branches/tarek-pep-345-support/pypi.wsgi Log: handle request with empty data Modified: branches/tarek-pep-345-support/pypi.wsgi ============================================================================== --- branches/tarek-pep-345-support/pypi.wsgi (original) +++ branches/tarek-pep-345-support/pypi.wsgi Wed Mar 17 05:14:09 2010 @@ -6,13 +6,16 @@ store.keep_conn = True -CONFIG_FILE = '/data/pypi/config.ini' +CONFIG_FILE = 'config.ini' class Request: def __init__(self, environ, start_response): self.start_response = start_response - length = int(environ['CONTENT_LENGTH']) + try: + length = int(environ['CONTENT_LENGTH']) + except ValueError: + length = 0 self.rfile = cStringIO.StringIO(environ['wsgi.input'].read(length)) self.wfile = cStringIO.StringIO() self.config = config.Config(CONFIG_FILE ) From python-checkins at python.org Sun Mar 21 00:00:25 2010 From: python-checkins at python.org (tarek.ziade) Date: Sun, 21 Mar 2010 00:00:25 +0100 (CET) Subject: [Pypi-checkins] r748 - branches/tarek-pep-345-support/templates Message-ID: <20100320230025.4C5C1F908@mail.python.org> Author: tarek.ziade Date: Sun Mar 21 00:00:25 2010 New Revision: 748 Modified: branches/tarek-pep-345-support/templates/display.pt branches/tarek-pep-345-support/templates/standard_template.pt Log: removed trailing spaces Modified: branches/tarek-pep-345-support/templates/display.pt ============================================================================== --- branches/tarek-pep-345-support/templates/display.pt (original) +++ branches/tarek-pep-345-support/templates/display.pt Sun Mar 21 00:00:25 2010 @@ -157,6 +157,7 @@ +
  • Requires
      @@ -177,6 +178,8 @@
  • + +
  • Package Index Owner: Modified: branches/tarek-pep-345-support/templates/standard_template.pt ============================================================================== --- branches/tarek-pep-345-support/templates/standard_template.pt (original) +++ branches/tarek-pep-345-support/templates/standard_template.pt Sun Mar 21 00:00:25 2010 @@ -1,6 +1,6 @@ @@ -20,7 +20,7 @@ - +