[Distutils] HTTP authentication support

Phillip J. Eby pje at telecommunity.com
Thu Dec 28 07:38:05 CET 2006

At 03:12 PM 12/28/2006 +0900, David Smith wrote:
>The usecase is too obvious: using setuptools for
>distribution of modules that are not publically available, such
>as commercial or pre-release development.

If they're not publically available, why use authenticated HTTP at 
all?  Among the many alternatives that work with easy_install today are:

* rsync-mirrored directories
* NFS-mounted directories
* ssh-transport SVN servers (you even get prompted for your credentials!)
* proxied HTTP

And in a lot of cases, one or more of the above is either already set up or 
easier to add than a password-protected web directory.  It seems to me that 
the only case where HTTP auth helps is if you were already distributing 
your files that way.

>Until 0.7 is released, considering the very small size of the
>patch, could we add this for now and refactor it later?

0.6 is in a bugfix-only mode at the moment.  It *may* get some extra 
features in the bootstrapping system (ez_setup) before the final release, 
but that's basically it.

Please note that if you want to add this feature, nothing is stopping you 
from subclassing PackageIndex and creating an easy_install() instance that 
uses an instance of your subclass.  This can be done without any patching; 
you would simply do something like this::

     class MyPackageIndex(PackageIndex):
         # ...

     class my_easy_install(easy_install):
         create_index = MyPackageIndex   # makes it use your class instead
         # ...

And then either write your own version of the 'main()' function, or 
monkeypatch your class in.  Add a setup.py to your little package to 
specify an entry point, and your easy_install command-line replacement is 
good to go.

If your main concern is for your projects that use setuptools, you don't 
even need the main() function.  Just specify:

     cmdclass = dict(easy_install=my_easy_install),

in your setup() call to tell setuptools to use your replacement class.

In other words, you don't need to have this patch accepted in order to 
integrate the functionality with the existing system.  It's just not a nice 
orthogonal plugin, as you have to supply replacement subclasses in the 
normal distutils style, instead of entry points in the setuptools style.

More information about the Distutils-SIG mailing list