Added setup.py and .cfg
diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle
index 8bec7f5..b31aa2f 100644
--- a/docs/_build/doctrees/environment.pickle
+++ b/docs/_build/doctrees/environment.pickle
Binary files differ
diff --git a/docs/_build/doctrees/index.doctree b/docs/_build/doctrees/index.doctree
index 16f8b5d..a9e44ce 100644
--- a/docs/_build/doctrees/index.doctree
+++ b/docs/_build/doctrees/index.doctree
Binary files differ
diff --git a/docs/_build/html/_sources/index.txt b/docs/_build/html/_sources/index.txt
index 233073b..b22f6f8 100644
--- a/docs/_build/html/_sources/index.txt
+++ b/docs/_build/html/_sources/index.txt
@@ -224,6 +224,11 @@
 .. autoclass:: OpenIDResponse
    :members:
 
+.. data:: COMMON_PROVIDERS
+
+   a dictionary of common provider name -> login URL mappings.  This can
+   be used to implement "click button to login" functionality.
+
 .. _Flask: http://flask.pocoo.org/
 .. _OpenID: http://openid.net/
 .. _python-openid: http://openidenabled.com/python-openid/
diff --git a/docs/_build/html/genindex.html b/docs/_build/html/genindex.html
index 792b35c..227df13 100644
--- a/docs/_build/html/genindex.html
+++ b/docs/_build/html/genindex.html
@@ -57,6 +57,9 @@
 <h2 id="C">C</h2>
 <table width="100%" class="indextable genindextable"><tr>
   <td width="33%" valign="top"><dl>
+    <dt><a href="index.html#flaskext.openid.COMMON_PROVIDERS">COMMON_PROVIDERS (in module flaskext.openid)</a></dt>
+</dl></td>
+  <td width="33%" valign="top"><dl>
     <dt><a href="index.html#flaskext.openid.OpenIDResponse.country">country (flaskext.openid.OpenIDResponse attribute)</a></dt>
 </dl></td>
 </tr></table>
diff --git a/docs/_build/html/index.html b/docs/_build/html/index.html
index 216a8b0..06868a9 100644
--- a/docs/_build/html/index.html
+++ b/docs/_build/html/index.html
@@ -472,6 +472,12 @@
 
 </dd></dl>
 
+<dl class="data">
+<dt id="flaskext.openid.COMMON_PROVIDERS">
+<tt class="descclassname">flaskext.openid.</tt><tt class="descname">COMMON_PROVIDERS</tt><a class="headerlink" href="#flaskext.openid.COMMON_PROVIDERS" title="Permalink to this definition">¶</a></dt>
+<dd>a dictionary of common provider name -&gt; login URL mappings.  This can
+be used to implement &#8220;click button to login&#8221; functionality.</dd></dl>
+
 </div>
 </div>
 
diff --git a/docs/_build/html/objects.inv b/docs/_build/html/objects.inv
index 246f0f2..bb351ee 100644
--- a/docs/_build/html/objects.inv
+++ b/docs/_build/html/objects.inv
Binary files differ
diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js
index e5c2cef..d32866d 100644
--- a/docs/_build/html/searchindex.js
+++ b/docs/_build/html/searchindex.js
@@ -1 +1 @@
-Search.setIndex({objects:{"flaskext.openid.OpenID":{try_login:[0,3,1],loginhandler:[0,3,1],get_next_url:[0,3,1],signal_error:[0,3,1],errorhandler:[0,3,1],fetch_error:[0,3,1],get_success_url:[0,3,1],after_login:[0,3,1],attach_reg_info:[0,3,1],get_current_url:[0,3,1]},"flaskext.openid":{OpenID:[0,2,1],OpenIDResponse:[0,2,1]},flaskext:{openid:[0,0,0]},"flaskext.openid.OpenIDResponse":{image:[0,1,1],postcode:[0,1,1],skype:[0,1,1],timezone:[0,1,1],jabber:[0,1,1],identity_url:[0,1,1],blog:[0,1,1],msn:[0,1,1],date_of_birth:[0,1,1],icq:[0,1,1],email:[0,1,1],website:[0,1,1],yahoo:[0,1,1],phone:[0,1,1],year_of_birth:[0,1,1],nickname:[0,1,1],language:[0,1,1],gender:[0,1,1],month_of_birth:[0,1,1],aim:[0,1,1],country:[0,1,1],fullname:[0,1,1]}},terms:{all:0,code:0,try_login:0,just:0,object:0,referr:0,queri:0,resp:0,consult:0,becaus:0,openid:0,month:0,elif:0,session:0,url:0,follow:0,languag:0,paramet:0,perfect:0,profil:0,depend:0,field:0,flask:0,flash:0,friendli:0,should:0,blog:0,add:0,date_of_birth:0,creat:0,text:0,input:0,hidden:0,might:0,sent:0,applic:0,them:0,"return":0,string:0,get:0,proce:0,db_session:0,pypi:0,none:0,auth:0,number:0,endpoint:0,birth:0,"new":0,veri:0,postal:0,enter:0,icq:0,requir:0,like:0,tri:0,skype:0,document:0,somewher:0,name:0,success:0,gender:0,signal:0,list:0,html:0,integ:0,server:0,"try":0,auth_request:0,api:0,integr:0,sql:0,lose:0,where:0,page:0,view:0,respond:0,conform:0,provid:0,set:0,map:0,oid:0,creation:0,some:0,somehow:0,sign:0,see:0,full:0,authent:0,pass:0,download:0,our:0,fullnam:0,successfulli:0,openid_error:0,out:0,index:0,what:0,extend:0,flaskext:0,matter:0,miss:0,your:0,current:0,figur:0,inject:0,msn:0,simpleopenid:0,neither:0,backend:0,method:0,refer:0,altern:0,redirect:0,after:0,abov:0,insid:0,advanc:0,error:0,differ:0,here:0,standard:0,bodi:0,extens:0,step:0,base:0,logout:0,free:0,after_login:0,ask:0,layout:0,post:0,strong:0,modifi:0,attach_reg_info:0,render_templ:0,about:0,befor:0,iso3166:0,login:0,errorhandl:0,keep:0,datetim:0,instanc:0,place:0,def:0,logic:0,action:0,databas:0,chang:0,timezon:0,nicknam:0,support:0,block:0,first:0,everi:0,pleas:0,own:0,directli:0,can:0,feel:0,app:0,address:0,prefer:0,easy_instal:0,pop:0,email:0,alreadi:0,submit:0,path:0,"import":0,next:0,storag:0,memor:0,size:0,kei:0,websit:0,given:0,from:0,log:0,coupl:0,endif:0,addition:0,data:0,get_next_url:0,fallback_endpoint:0,how:0,system:0,messag:0,mark:0,fetch_error:0,attach:0,handler:0,call:0,valu:0,basic:0,msg:0,fs_store_path:0,get_current_url:0,instal:0,hei:0,store:0,more:0,"function":0,desir:0,option:0,form:0,forward:0,python:0,handl:0,imag:0,yahoo:0,specifi:0,back:0,occour:0,sqlalchemi:0,mail:0,on_error:0,folder:0,must:0,"case":0,iso639:0,account:0,ident:0,url_for:0,look:0,possibl:0,"default":0,type:0,remov:0,commit:0,intern:0,aim:0,defin:0,sens:0,assum:0,were:0,exist:0,minut:0,male:0,typic:0,fetch:0,endblock:0,hand:0,featur:0,have:0,helper:0,process:0,year:0,mind:0,templat:0,proper:0,make:0,itself:0,ask_for:0,unreli:0,want:0,tabl:0,pip:0,next_url:0,postcod:0,happen:0,lookup_current_us:0,filter_bi:0,again:0,login_handl:0,messeng:0,titl:0,rout:0,signal_error:0,when:0,same:0,also:0,need:0,valid:0,useless:0,rememb:0,before_request:0,you:0,probabl:0,simpl:0,nice:0,simplifi:0,openidrespons:0,sure:0,http:0,thi:0,alwai:0,href:0,femail:0,"class":0,time:0,decor:0,loginhandl:0,sreg:0,get_success_url:0,year_of_birth:0,temporari:0,user:0,create_profil:0,countri:0,date:0,create_or_login:0,identity_url:0,implement:0,avail:0,store_factori:0,resons:0,github:0,don:0,els:0,jabber:0,phone:0,dob:0,request:0,month_of_birth:0,doe:0,inform:0,exampl:0,command:0,came:0,allow:0,filesystem:0,fail:0,order:0,unset:0},objtypes:{"0":"py:module","1":"py:attribute","2":"py:class","3":"py:method"},titles:["Flask-OpenID"],objnames:{"0":"module","1":"attribute","2":"class","3":"method"},filenames:["index"]})
\ No newline at end of file
+Search.setIndex({objects:{"flaskext.openid.OpenID":{try_login:[0,3,1],loginhandler:[0,3,1],get_next_url:[0,3,1],signal_error:[0,3,1],errorhandler:[0,3,1],fetch_error:[0,3,1],get_success_url:[0,3,1],after_login:[0,3,1],attach_reg_info:[0,3,1],get_current_url:[0,3,1]},"flaskext.openid":{OpenID:[0,2,1],OpenIDResponse:[0,2,1],COMMON_PROVIDERS:[0,4,1]},flaskext:{openid:[0,0,0]},"flaskext.openid.OpenIDResponse":{image:[0,1,1],postcode:[0,1,1],skype:[0,1,1],timezone:[0,1,1],jabber:[0,1,1],identity_url:[0,1,1],blog:[0,1,1],msn:[0,1,1],date_of_birth:[0,1,1],icq:[0,1,1],email:[0,1,1],website:[0,1,1],yahoo:[0,1,1],phone:[0,1,1],year_of_birth:[0,1,1],nickname:[0,1,1],language:[0,1,1],gender:[0,1,1],month_of_birth:[0,1,1],aim:[0,1,1],country:[0,1,1],fullname:[0,1,1]}},terms:{all:0,code:0,try_login:0,just:0,also:0,queri:0,resp:0,filesystem:0,becaus:0,month:0,resons:0,elif:0,session:0,month_of_birth:0,follow:0,layout:0,languag:0,paramet:0,perfect:0,current:0,depend:0,common_provid:0,field:0,flask:0,flash:0,friendli:0,should:0,blog:0,add:0,date_of_birth:0,helper:0,text:0,input:0,hidden:0,might:0,sent:0,applic:0,them:0,"return":0,string:0,get:0,proce:0,db_session:0,pypi:0,account:0,auth:0,easy_instal:0,ident:0,birth:0,simpleopenid:0,veri:0,postal:0,"class":0,neither:0,requir:0,like:0,tri:0,somewher:0,name:0,success:0,signal:0,gender:0,button:0,list:0,authent:0,server:0,"try":0,"default":0,alreadi:0,integr:0,lose:0,refer:0,where:0,page:0,remov:0,view:0,respond:0,conform:0,provid:0,set:0,simplifi:0,creation:0,some:0,somehow:0,sign:0,see:0,integ:0,pass:0,download:0,our:0,fullnam:0,successfulli:0,click:0,out:0,index:0,what:0,insid:0,flaskext:0,defin:0,miss:0,memor:0,profil:0,figur:0,inject:0,sreg:0,"new":0,icq:0,size:0,method:0,common:0,altern:0,redirect:0,full:0,abov:0,extend:0,advanc:0,post:0,were:0,given:0,here:0,standard:0,bodi:0,extens:0,step:0,base:0,logout:0,free:0,dictionari:0,after_login:0,ask:0,openid_error:0,referr:0,strong:0,modifi:0,valid:0,after:0,render_templ:0,about:0,get_success_url:0,errorhandl:0,keep:0,datetim:0,map:0,instanc:0,place:0,endblock:0,logic:0,action:0,databas:0,chang:0,timezon:0,nicknam:0,get_next_url:0,block:0,first:0,pleas:0,own:0,mail:0,directli:0,feel:0,app:0,address:0,prefer:0,number:0,pop:0,order:0,email:0,api:0,next_url:0,messag:0,path:0,"import":0,mark:0,storag:0,your:0,backend:0,kei:0,fetch_error:0,differ:0,from:0,log:0,coupl:0,endif:0,addition:0,identity_url:0,support:0,fallback_endpoint:0,system:0,submit:0,next:0,websit:0,attach:0,handler:0,call:0,valu:0,sens:0,basic:0,msg:0,typic:0,fs_store_path:0,get_current_url:0,instal:0,hei:0,store:0,more:0,"function":0,allow:0,desir:0,option:0,form:0,forward:0,python:0,imag:0,yahoo:0,specifi:0,back:0,occour:0,sqlalchemi:0,dob:0,consult:0,on_error:0,countri:0,folder:0,must:0,"case":0,iso639:0,none:0,endpoint:0,url_for:0,look:0,possibl:0,auth_request:0,type:0,msn:0,commit:0,intern:0,aim:0,matter:0,can:0,assum:0,error:0,exist:0,minut:0,male:0,iso3166:0,fetch:0,def:0,featur:0,want:0,creat:0,process:0,year:0,mind:0,templat:0,proper:0,itself:0,ask_for:0,unreli:0,have:0,skype:0,pip:0,everi:0,postcod:0,happen:0,lookup_current_us:0,filter_bi:0,implement:0,again:0,login_handl:0,probabl:0,messeng:0,titl:0,rout:0,signal_error:0,when:0,same:0,how:0,need:0,html:0,useless:0,rememb:0,before_request:0,you:0,document:0,simpl:0,nice:0,openid:0,openidrespons:0,sure:0,http:0,time:0,alwai:0,href:0,femail:0,attach_reg_info:0,oid:0,decor:0,loginhandl:0,hand:0,befor:0,year_of_birth:0,tabl:0,temporari:0,user:0,create_profil:0,sql:0,date:0,create_or_login:0,data:0,login:0,avail:0,store_factori:0,handl:0,github:0,don:0,els:0,jabber:0,phone:0,url:0,request:0,object:0,doe:0,inform:0,exampl:0,command:0,unset:0,thi:0,enter:0,fail:0,make:0,came:0},objtypes:{"0":"py:module","1":"py:attribute","2":"py:class","3":"py:method","4":"py:data"},titles:["Flask-OpenID"],objnames:{"0":"module","1":"attribute","2":"class","3":"method","4":"data"},filenames:["index"]})
\ No newline at end of file
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..9b99664
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,7 @@
+[build_sphinx]
+source-dir = docs/
+build-dir = docs/_build
+all_files = 1
+
+[upload_sphinx]
+upload-dir = docs/_build/html
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..1ac3677
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,44 @@
+"""
+Flask-OpenID
+============
+
+Adds OpenID support to Flask.
+
+Links:
+
+* `Flask-OpenID Documentation <http://packages.python.org/Flask-OpenID/>`_
+* `Flask <http://flask.pocoo.org>`_
+* `development version
+  <http://github.com/mitsuhiko/flask-openid/zipball/master#egg=Flask-OpenID-dev>`_
+"""
+from setuptools import setup
+
+
+setup(
+    name='Flask-OpenID',
+    version='0.9',
+    url='http://github.com/mitsuhiko/flask-openid/',
+    license='BSD',
+    author='Armin Ronacher',
+    author_email='armin.ronacher@active-4.com',
+    description='OpenID support for Flask',
+    long_description=__doc__,
+    packages=['flaskext'],
+    namespace_packages=['flaskext'],
+    zip_safe=False,
+    platforms='any',
+    install_requires=[
+        'Flask',
+        'python-openid>=2.0'
+    ],
+    classifiers=[
+        'Development Status :: 4 - Beta',
+        'Environment :: Web Environment',
+        'Intended Audience :: Developers',
+        'License :: OSI Approved :: BSD License',
+        'Operating System :: OS Independent',
+        'Programming Language :: Python',
+        'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
+        'Topic :: Software Development :: Libraries :: Python Modules'
+    ]
+)