Flask の Extension の Python3 対応状況

Flask がめでたく Python3.3 をサポートしたので、Flask に依存している Flask-Extension の Python3 対応状況が気になったので調べてみた。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pprint
import requests
from bs4 import BeautifulSoup

PYPI = 'https://pypi.python.org{0}'
                          
list_page = requests.get(PYPI.format('/pypi?%3Aaction=search&term=flask&submit=search'))   
soup = BeautifulSoup(list_page.content)
items = soup.find_all(
    lambda tag: tag.name == 'td'
    and tag.find('a') != None
)
urls = [v.contents[0].get('href') for v in items]
results = []
for url in urls:
    r = requests.get(PYPI.format(url))
    package_page = BeautifulSoup(r.content)
    logo = package_page.find_all(id='logo')[0].get('src')
    if logo == '/python-3.png':
        results.append(url)

pprint.pprint(results)

PyPi の検索で Flask と入力して出てきた結果一覧のリンクの中で Python3 のロゴが出ているものだけを抽出した。
# PyPi にあまり負荷をかけたくないから直列でアクセスしている
# そのため遅い

['/pypi/Flask/0.10.1',
 '/pypi/Flask-BasicAuth/0.2.0',
 '/pypi/Flask-Classy/0.6.3',
 '/pypi/Flask-MakeStatic/0.2.0',
 '/pypi/mixer/0.5.0',
 '/pypi/errormator-client/0.5.12',
 '/pypi/mimerender/0.5.3',
 '/pypi/python-social-auth/0.1.7',
 '/pypi/Tornado-Restless/0.1.0',
 '/pypi/Attest/0.5.3',
 '/pypi/Attest-latest/0.6.1dev-20130603',
 '/pypi/bootstrapper/0.1.5',
 '/pypi/celery/3.0.19',
 '/pypi/cookies/1.2.1',
 '/pypi/crochet/0.7.0',
 '/pypi/disco-dop/0.2',
 '/pypi/err/2.0.0-beta',
 '/pypi/Gears/0.6',
 '/pypi/healthy/0.1.2',
 '/pypi/meinheld/0.5.5',
 '/pypi/natrix/0.0.1',
 '/pypi/py3support/0.1.1',
 '/pypi/pyforms/0.1',
 '/pypi/pyramid_debugtoolbar/1.0.6',
 '/pypi/pyrc/0.6.4',
 '/pypi/raven/3.3.7',
 '/pypi/statsd-client/1.0.4',
 '/pypi/Tornado-Backbone/0.1.0',
 '/pypi/url_shortener/0.5.18',
 '/pypi/WSME/0.5b2']

直接 Flask と関係ないものも入ってるけど…。


Flask が Python3 対応をちゃんとリリースしてからまだ日が浅いのでしばらくしたら対応されるかと思う。