From metatracker at psf.upfronthosting.co.za Mon May 5 13:57:50 2014 From: metatracker at psf.upfronthosting.co.za (Ezio Melotti) Date: Mon, 05 May 2014 11:57:50 +0000 Subject: [Tracker-discuss] [issue543] nosy list popup menu has become very slow In-Reply-To: <1398877435.2.0.945868449831.issue543@psf.upfronthosting.co.za> Message-ID: <1399291070.31.0.140152972035.issue543@psf.upfronthosting.co.za> Ezio Melotti added the comment: Fixed in http://hg.python.org/tracker/python-dev/rev/1fd5ec663c29, thanks for the report! ---------- assignedto: -> ezio.melotti nosy: +ezio.melotti status: unread -> resolved _______________________________________________________ PSF Meta Tracker _______________________________________________________ From techtonik at gmail.com Thu May 8 10:06:41 2014 From: techtonik at gmail.com (anatoly techtonik) Date: Thu, 8 May 2014 11:06:41 +0300 Subject: [Tracker-discuss] Pseudo protection of b.p.o from MITM In-Reply-To: <87oazuqhsr.fsf@uwakimon.sk.tsukuba.ac.jp> References: <87oazuqhsr.fsf@uwakimon.sk.tsukuba.ac.jp> Message-ID: On Tue, Apr 22, 2014 at 4:22 AM, Stephen J. Turnbull wrote: > Anatoly, don't you know that cross-posting is a bad idea?[1] If you > disagree with the management of bugs.python.org, tracker-discuss is > the right place to post. SSL certificates is not a question related to tracker, but a question related to infrastructure. > > The b.p.o uses CAcert certificate that was never valid on Windows > > Of course it was valid, it was simply not trusted by default. Given > Microsoft's historical aversion to "free" anything, that's a > completely null signal. CAcert certificates on b.p.o are invalid, because they do not fulfill their purpose - providing protected channel. If self-signed certificates and compromised certificates present on b.p.o are also be valid for you, let's use word "insecure". Hopefully, that's better. > Perhaps it's worth moving to a different free root authority, or maybe > even (gasp!) paying for a well-known commercial certificate, but you > need to find one that satisfies the technical requirement posted by > Martin -- namely, that certs for a particular host should *not* allow > escalation of privilege to all hosts in the python.org domain. (Note > that if we use a commercial service this probably becomes rather > expensive.) There may be other requirements I don't know about. Can you post a link with description how certificate for bugs.python.org can escalate privileges to other python.org subdomains? > Personally, since I think that the X.509 architecture is broken at the > top in practice (why is Verisign trustworthy? how about the Chinese > National Network Information Center? or the Japanese Ministry of > Education (my employer)? yet most systems -- including Windows -- > default to trusting any certificate issued by any of them), having a > root cert that seems trustworthy to me, yet isn't trusted by default, > allowing me to *choose* to assign an appropriate amount of trust to > bugs.python.org, seems to be the most secure option. > > I don't know if it's any better than a self-signed cert, of course. The biggest problem that you and bugs.python.org teaches users that broken security certificate for a site is norm. They think that it just an annoyance, so they remove the nag and click further. If people don't care, any PyCon can be used to gather accounts to use for more profitable attacks. > > I disapprove the decision of these people > What else is new? I provided an explanation why? > > and hope that somebody from python community can change their > > convoluted understanding of security. > > Security *is* convoluted, and your own understanding of it seems to > be limited since you misuse technical terms like "valid" (there's a > difference between "cannot be validated" and "not valid"). I am not Englishman. That's all. > Footnotes: > [1] Among other things, it makes it likely that the ban on your > participation will be extended. You don't like criticism, so it's no place for me anyway, and I still don't understand people who ban other people just because these other people are grumpy. -- anatoly t. From roundup-admin at psf.upfronthosting.co.za Sun May 11 06:26:59 2014 From: roundup-admin at psf.upfronthosting.co.za (Python tracker) Date: Sun, 11 May 2014 04:26:59 +0000 Subject: [Tracker-discuss] Failed issue tracker submission Message-ID: <20140511042659.CFD7E56915@psf.upfronthosting.co.za> The node specified by the designator in the subject of your message ("21476") does not exist. Subject was: "[issue21476]" Mail Gateway Help ================= Incoming messages are examined for multiple parts: . In a multipart/mixed message or part, each subpart is extracted and examined. The text/plain subparts are assembled to form the textual body of the message, to be stored in the file associated with a "msg" class node. Any parts of other types are each stored in separate files and given "file" class nodes that are linked to the "msg" node. . In a multipart/alternative message or part, we look for a text/plain subpart and ignore the other parts. . A message/rfc822 is treated similar tomultipart/mixed (except for special handling of the first text part) if unpack_rfc822 is set in the mailgw config section. Summary ------- The "summary" property on message nodes is taken from the first non-quoting section in the message body. The message body is divided into sections by blank lines. Sections where the second and all subsequent lines begin with a ">" or "|" character are considered "quoting sections". The first line of the first non-quoting section becomes the summary of the message. Addresses --------- All of the addresses in the To: and Cc: headers of the incoming message are looked up among the user nodes, and the corresponding users are placed in the "recipients" property on the new "msg" node. The address in the From: header similarly determines the "author" property of the new "msg" node. The default handling for addresses that don't have corresponding users is to create new users with no passwords and a username equal to the address. (The web interface does not permit logins for users with no passwords.) If we prefer to reject mail from outside sources, we can simply register an auditor on the "user" class that prevents the creation of user nodes with no passwords. Actions ------- The subject line of the incoming message is examined to determine whether the message is an attempt to create a new item or to discuss an existing item. A designator enclosed in square brackets is sought as the first thing on the subject line (after skipping any "Fwd:" or "Re:" prefixes). If an item designator (class name and id number) is found there, the newly created "msg" node is added to the "messages" property for that item, and any new "file" nodes are added to the "files" property for the item. If just an item class name is found there, we attempt to create a new item of that class with its "messages" property initialized to contain the new "msg" node and its "files" property initialized to contain any new "file" nodes. Triggers -------- Both cases may trigger detectors (in the first case we are calling the set() method to add the message to the item's spool; in the second case we are calling the create() method to create a new node). If an auditor raises an exception, the original message is bounced back to the sender with the explanatory message given in the exception. -------------- next part -------------- Return-Path: X-Original-To: report at bugs.python.org Delivered-To: roundup+tracker at psf.upfronthosting.co.za Received: from mail.python.org (mail.python.org [82.94.164.166]) by psf.upfronthosting.co.za (Postfix) with ESMTPS id 6EB2F56912 for ; Sun, 11 May 2014 06:26:59 +0200 (CEST) Received: from albatross.python.org (localhost [127.0.0.1]) by mail.python.org (Postfix) with ESMTP id 3gRC0g0jg9z7Ljb for ; Sun, 11 May 2014 06:26:59 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901; t=1399782419; bh=rpc6z9Rr+B4jLeCmc9w4cchxOxBQq5X8LqgEJy9NV08=; h=From:To:Subject:Date:From; b=Dr265Mc3fXZZX2LvXXqzZpJ1Dw8c34UvHxdbQ3xMGMurRGa1HlAPxnkinFZVlce/c gwAbyq77SovpaMyjIT4vC+Ib9PhIaPyogakxtBpO0XRdOEusMpsE9tiYgJWqluEHWL PBQLbCy9JBnSz1cK5xPAUocFOAeuq2tvdFGb9qUY= Received: from localhost (HELO mail.python.org) (127.0.0.1) by albatross.python.org with SMTP; 11 May 2014 06:26:59 +0200 Received: from virt-7yvsjn.psf.osuosl.org (unknown [140.211.10.72]) by mail.python.org (Postfix) with ESMTP for ; Sun, 11 May 2014 06:26:58 +0200 (CEST) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 From: tracker-discuss at python.org To: report at bugs.python.org Subject: [issue21476] Message-Id: <3gRC0g0jg9z7Ljb at mail.python.org> Date: Sun, 11 May 2014 06:26:59 +0200 (CEST) TmV3IGNoYW5nZXNldCA3MzBlZWIxMGNkODEgYnkgU3RldmUgRG93ZXIgaW4gYnJhbmNoICcyLjcn OgpJc3N1ZSAjMjE0NzYgSW5jbHVkZSBpZGxlIGljb24gZmlsZXMgaW4gV2luZG93cyBpbnN0YWxs ZXIKaHR0cDovL2hnLnB5dGhvbi5vcmcvY3B5dGhvbi9yZXYvNzMwZWViMTBjZDgxCg== From metatracker at psf.upfronthosting.co.za Thu May 15 11:59:10 2014 From: metatracker at psf.upfronthosting.co.za (Ezio Melotti) Date: Thu, 15 May 2014 09:59:10 +0000 Subject: [Tracker-discuss] [issue544] Tracker stats Message-ID: <1400147950.71.0.701791018653.issue544@psf.upfronthosting.co.za> New submission from Ezio Melotti: I've been working on adding a "stats" page to the tracker, that uses the stats from the weekly report to plot some graphs. A "static" demo is already up at http://bugs.python.org/issue?@template=stats The plots are created client-side by using data saved in a JSON file on the server. The idea is to modify the script that generates the weekly report to also append the data to the JSON file when it runs (i.e. once a week). I can provide an initial JSON file with historic data that can be used as a starting point (i.e. the one currently used for the demo). If it's OK I will: 1) add a new "--update-stats-file" option to the weekly report script that opens the JSON file, adds the new values, and saves it; 2) modify the cron job to use this new flag; 3) update the initial JSON file with the historic data; 4) upload somewhere (maybe in scripts/) the code I used to generate the historic data (by parsing the past summary reports); I can also tweak the currents graphs if necessary (e.g. adding zoom, more or less values, change graph type, etc.), but what showed in the demo should be a good starting point -- we can always tweak them later on. ---------- assignedto: ezio.melotti messages: 2863 nosy: ezio.melotti, loewis priority: feature status: in-progress title: Tracker stats _______________________________________________________ PSF Meta Tracker _______________________________________________________ From metatracker at psf.upfronthosting.co.za Thu May 15 13:50:54 2014 From: metatracker at psf.upfronthosting.co.za (R David Murray) Date: Thu, 15 May 2014 11:50:54 +0000 Subject: [Tracker-discuss] [issue544] Tracker stats In-Reply-To: <1400147950.71.0.701791018653.issue544@psf.upfronthosting.co.za> Message-ID: <1400154654.71.0.259214469253.issue544@psf.upfronthosting.co.za> R David Murray added the comment: Sounds good to me. ---------- nosy: +r.david.murray _______________________________________________________ PSF Meta Tracker _______________________________________________________ From metatracker at psf.upfronthosting.co.za Thu May 15 16:40:15 2014 From: metatracker at psf.upfronthosting.co.za (Ezio Melotti) Date: Thu, 15 May 2014 14:40:15 +0000 Subject: [Tracker-discuss] [issue544] Tracker stats In-Reply-To: <1400147950.71.0.701791018653.issue544@psf.upfronthosting.co.za> Message-ID: <1400164815.7.0.368411933738.issue544@psf.upfronthosting.co.za> Ezio Melotti added the comment: Here is the patch. I plan to commit it in the next 24 hours, so we can see if it works fine with tomorrow weekly summary. If it does I'll add links to the stats page somewhere in the sidebar. _______________________________________________________ PSF Meta Tracker _______________________________________________________ -------------- next part -------------- diff --git a/html/issue.stats.html b/html/issue.stats.html new file mode 100644 --- /dev/null +++ b/html/issue.stats.html @@ -0,0 +1,107 @@ + + + <span tal:omit-tag="true" i18n:translate="" >Issues stats</span> + <span tal:condition="request/dispname" + tal:replace="python:' - %s '%request.dispname" + /> - <span tal:replace="config/TRACKER_NAME" /> + + + + + + + + + + + + + + + + + + Issues stats + + + + +

These charts are updated weekly. JavaScript must be enabled to see the charts.

+ +

Total number of open issues and open issues with patches:

+
+ +

Delta of open issues compared with the previous week. If the delta is positive, +the total number of open issues increased; if negative, the total number decreased.

+
+ +

Number of issues that have been opened and closed during each week. +The difference between these two values is shown in the previous graph.

+
+ +

The number of closed issues, and the number of issues regardless of their status:

+
+ +
+
diff --git a/scripts/issuestats.py b/scripts/issuestats.py new file mode 100644 --- /dev/null +++ b/scripts/issuestats.py @@ -0,0 +1,206 @@ +# Search for the weekly summary reports from bugs.python.org in the +# python-dev archives and plot the result. +# +# $ issuestats.py collect +# +# Collects statistics from the mailing list and saves to +# issue.stats.json +# +# $ issuestats.py plot +# +# Written by Ezio Melotti. +# Based on the work of Petri Lehtinen (https://gist.github.com/akheron/2723809). +# + + +import os +import re +import sys +import json +import gzip +import errno +import argparse +import datetime +import tempfile +import webbrowser +import urllib.parse +import urllib.request + +from collections import defaultdict + +MONTH_NAMES = [datetime.date(2012, n, 1).strftime('%B') for n in range(1, 13)] +ARCHIVE_URL = 'http://mail.python.org/pipermail/python-dev/%s' + +STARTYEAR = 2011 +STARTMONTH = 1 # February + +NOW = datetime.date.today() +ENDYEAR = NOW.year +ENDMONTH = NOW.month + +STATISTICS_FILENAME = 'issue.stats.json' + +activity_re = re.compile('ACTIVITY SUMMARY \((\d{4}-\d\d-\d\d) - ' + '(\d{4}-\d\d-\d\d)\)') +count_re = re.compile('\s+(open|closed|total)\s+(\d+)\s+\(([^)]+)\)') +patches_re = re.compile('Open issues with patches: (\d+)') + +def find_statistics(source): + print(source) + monthly_data = {} + with gzip.open(source) as file: + parsing = False + for line in file: + line = line.decode('utf-8') + if not parsing: + m = activity_re.match(line) + if not m: + continue + start_end = m.groups() + if start_end in monthly_data: + continue + monthly_data[start_end] = weekly_data = {} + parsing = True + continue + m = count_re.match(line) + if parsing and m: + type, count, delta = m.groups() + weekly_data[type] = int(count) + weekly_data[type + '_delta'] = int(delta) + m = patches_re.match(line) + if parsing and m: + weekly_data['patches'] = int(m.group(1)) + parsing = False + print(' ', len(monthly_data), 'reports found') + return monthly_data + + + +def collect_data(): + try: + os.mkdir('cache') + except OSError as exc: + if exc.errno != errno.EEXIST: + raise + + statistics = {} + + for year in range(STARTYEAR, ENDYEAR + 1): + # Assume STARTYEAR != ENDYEAR + if year == STARTYEAR: + month_range = range(STARTMONTH, 12) + elif year == ENDYEAR: + month_range = range(0, ENDMONTH) + else: + month_range = range(12) + + for month in month_range: + prefix = '%04d-%s' % (year, MONTH_NAMES[month]) + + archive = prefix + '.txt.gz' + archive_path = os.path.join('cache', archive) + + if not os.path.exists(archive_path): + print('Downloading %s' % archive) + url = ARCHIVE_URL % urllib.parse.quote(archive) + urllib.request.urlretrieve(url, archive_path) + + + print('Processing %s' % prefix) + statistics.update(find_statistics(archive_path)) + + + statistics2 = defaultdict(list) + for key, val in sorted(statistics.items()): + statistics2['timespan'].append(key) + for k2, v2 in val.items(): + statistics2[k2].append(v2) + + with open(STATISTICS_FILENAME, 'w') as fobj: + json.dump(statistics2, fobj) + + print('Now run "plot".') + +HTML = """ + + + + + + + + + + +
+
+
+
+
+
+
+
+
+ + +""" +def plot_statistics(): + try: + with open(STATISTICS_FILENAME) as j: + json = j.read() + except FileNotFoundError: + sys.exit('You need to run "collect" first.') + with tempfile.NamedTemporaryFile('w', delete=False) as tf: + tf.write(HTML % json) + webbrowser.open(tf.name) + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument('command', choices=['collect', 'plot']) + + args = parser.parse_args() + + if args.command == 'collect': + collect_data() + elif args.command == 'plot': + plot_statistics() + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/scripts/roundup-summary b/scripts/roundup-summary --- a/scripts/roundup-summary +++ b/scripts/roundup-summary @@ -32,6 +32,8 @@ Print journal for all the transactions in the given date range. -D, --DEBUG Print email content without sending it if -m is used. + --update-stats-file=FILENAME + Append tracker stats to JSON file FILENAME. """ # This script has a class (Report) that filters the issues and generates txt @@ -44,6 +46,8 @@ #sys.path.insert(1, '/opt/tracker-roundup/lib/python2.6/site-packages/') import cgi +import json +import os.path import optparse from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText @@ -131,6 +135,10 @@ advanced.add_option( '-D', '--DEBUG', dest='debug', action='store_true', default=False, help='Print email content without sending it if -m is used.') + advanced.add_option( + '--update-stats-file', dest='update_stats', + metavar='FILENAME', default='issue.stats.json', + help='Append tracker stats to JSON file FILENAME.') parser.add_option_group(advanced) # Get the command line args: @@ -712,6 +720,26 @@ smtp.sendmail(config.ADMIN_EMAIL, recipient, msg.as_string()) +def update_stats_file(stats, filename): + stats = dict(stats) # make a copy + stats_file = os.path.join(instance_home, 'html', OPTIONS.update_stats) + try: + with open(stats_file) as fi: + j = json.load(fi) + except IOError: + j = dict(open=[], closed=[], total=[], timespan=[], patches=[], + open_delta=[], closed_delta=[], total_delta=[]) + timespan = stats.pop('timespan').split(' - ') + if timespan in j['timespan']: + return # we already updated the file today + j['timespan'].append(timespan) + for k, v in stats.items(): + if k in j: + j[k].append(v) + with open(stats_file, 'w') as fo: + json.dump(j, fo) + + def main(): """Create the report and print or send it.""" issue_attrs = issues_map() @@ -727,6 +755,8 @@ for recipient in OPTIONS.mailTo.split(','): send_report(recipient, txt_report, html_report) + if OPTIONS.update_stats: + update_stats_file(report.header_content, OPTIONS.update_stats) if __name__ == '__main__': From metatracker at psf.upfronthosting.co.za Fri May 16 00:43:36 2014 From: metatracker at psf.upfronthosting.co.za (ali) Date: Thu, 15 May 2014 22:43:36 +0000 Subject: [Tracker-discuss] [issue545] Arabic language not support in reportlab , direction of text right to left now work (RTL) Message-ID: <1400193816.41.0.0972737821986.issue545@psf.upfronthosting.co.za> New submission from ali: I have problem in create pdf file by reportlab package. the Arabic language appear in separate. and reverse of order. The attache file explain the problem, But in English language is work correctly. Also there's problem in direction of text (RTL). Arabic letter is written from left to write,so it should written from right to left. ---------- messages: 2866 nosy: ali.areshey priority: bug status: unread title: Arabic language not support in reportlab , direction of text right to left now work (RTL) topic: help _______________________________________________________ PSF Meta Tracker _______________________________________________________ From metatracker at psf.upfronthosting.co.za Fri May 16 09:34:15 2014 From: metatracker at psf.upfronthosting.co.za (Ezio Melotti) Date: Fri, 16 May 2014 07:34:15 +0000 Subject: [Tracker-discuss] [issue545] Arabic language not support in reportlab , direction of text right to left now work (RTL) In-Reply-To: <1400193816.41.0.0972737821986.issue545@psf.upfronthosting.co.za> Message-ID: <1400225655.58.0.490691858543.issue545@psf.upfronthosting.co.za> Ezio Melotti added the comment: You should report this here: https://bitbucket.org/rptlab/reportlab/issues ---------- assignedto: -> ezio.melotti nosy: +ezio.melotti status: unread -> resolved _______________________________________________________ PSF Meta Tracker _______________________________________________________ From metatracker at psf.upfronthosting.co.za Sun May 25 15:06:16 2014 From: metatracker at psf.upfronthosting.co.za (Nick Coghlan) Date: Sun, 25 May 2014 13:06:16 +0000 Subject: [Tracker-discuss] [issue546] Add notice of setuptools tracker relocation Message-ID: <1401023176.55.0.62561630372.issue546@psf.upfronthosting.co.za> New submission from Nick Coghlan: The main setuptools tracker has been relocated from http://bugs.python.org/setuptools/ to https://bitbucket.org/pypa/setuptools/issues Since the b.p.o setuptools tracker is still the number one hit on Google when searching for "setuptools bug" (the new tracker is currently third, after the PyPI entry), it would be good to have a banner on that page suggesting users may actually want the BitBucket issue tracker instead (including the link above). ---------- messages: 2868 nosy: ncoghlan priority: bug status: unread title: Add notice of setuptools tracker relocation _______________________________________________________ PSF Meta Tracker _______________________________________________________ From metatracker at psf.upfronthosting.co.za Sun May 25 18:50:48 2014 From: metatracker at psf.upfronthosting.co.za (R David Murray) Date: Sun, 25 May 2014 16:50:48 +0000 Subject: [Tracker-discuss] [issue546] Add notice of setuptools tracker relocation In-Reply-To: <1401023176.55.0.62561630372.issue546@psf.upfronthosting.co.za> <1401023176.55.0.62561630372.issue546@psf.upfronthosting.co.za> Message-ID: <20140525165046.13FD9250D0C@webabinitio.net> R David Murray added the comment: Did they copy the contents? Can we set up some sort of redirect instead? ---------- nosy: +r.david.murray status: unread -> chatting _______________________________________________________ PSF Meta Tracker _______________________________________________________ From rdmurray at bitdance.com Sun May 25 18:50:45 2014 From: rdmurray at bitdance.com (R. David Murray) Date: Sun, 25 May 2014 12:50:45 -0400 Subject: [Tracker-discuss] [issue546] Add notice of setuptools tracker relocation In-Reply-To: <1401023176.55.0.62561630372.issue546@psf.upfronthosting.co.za> <1401023176.55.0.62561630372.issue546@psf.upfronthosting.co.za> References: <1401023176.55.0.62561630372.issue546@psf.upfronthosting.co.za> <1401023176.55.0.62561630372.issue546@psf.upfronthosting.co.za> Message-ID: <20140525165046.13FD9250D0C@webabinitio.net> Did they copy the contents? Can we set up some sort of redirect instead? From metatracker at psf.upfronthosting.co.za Sun May 25 20:28:37 2014 From: metatracker at psf.upfronthosting.co.za (Ezio Melotti) Date: Sun, 25 May 2014 18:28:37 +0000 Subject: [Tracker-discuss] [issue546] Add notice of setuptools tracker relocation In-Reply-To: <20140525165046.13FD9250D0C@webabinitio.net> Message-ID: Ezio Melotti added the comment: There is already a notice, but it's only on the "issue" page. We could move it to the "page" page, so that it shows on all the pages. On May 25, 2014 6:50 PM, "R. David Murray" wrote: > Did they copy the contents? Can we set up some sort of redirect > instead? > _______________________________________________ > Tracker-discuss mailing list > Tracker-discuss at python.org > https://mail.python.org/mailman/listinfo/tracker-discuss > ---------- nosy: +ezio.melotti _______________________________________________________ PSF Meta Tracker _______________________________________________________ From ezio.melotti at gmail.com Sun May 25 20:28:36 2014 From: ezio.melotti at gmail.com (Ezio Melotti) Date: Sun, 25 May 2014 20:28:36 +0200 Subject: [Tracker-discuss] [issue546] Add notice of setuptools tracker relocation In-Reply-To: <20140525165046.13FD9250D0C@webabinitio.net> References: <1401023176.55.0.62561630372.issue546@psf.upfronthosting.co.za> <20140525165046.13FD9250D0C@webabinitio.net> Message-ID: There is already a notice, but it's only on the "issue" page. We could move it to the "page" page, so that it shows on all the pages. On May 25, 2014 6:50 PM, "R. David Murray" wrote: > Did they copy the contents? Can we set up some sort of redirect > instead? > _______________________________________________ > Tracker-discuss mailing list > Tracker-discuss at python.org > https://mail.python.org/mailman/listinfo/tracker-discuss > -------------- next part -------------- An HTML attachment was scrubbed... URL: From metatracker at psf.upfronthosting.co.za Sun May 25 23:49:02 2014 From: metatracker at psf.upfronthosting.co.za (Ezio Melotti) Date: Sun, 25 May 2014 21:49:02 +0000 Subject: [Tracker-discuss] [issue546] Add notice of setuptools tracker relocation In-Reply-To: <1401023176.55.0.62561630372.issue546@psf.upfronthosting.co.za> Message-ID: <1401054542.44.0.570299730224.issue546@psf.upfronthosting.co.za> Ezio Melotti added the comment: See issue522 _______________________________________________________ PSF Meta Tracker _______________________________________________________