=======================
collective.dist package
=======================

.. contents::

What is collective.dist ?
=========================

I have added in Python 2.6 a new feature to allow people
to deal with several PyPI-like servers in `.pypirc`.

Basically you can use `register` and `upload` commands on any server
registered in `.pypirc`, which changed a bit.

But Plone and Zope runs on Python 2.4.

So this package adds two new commands so you can use what will be 
available in Python 2.6:

- **mupload**: command that allows uploading the package to several servers
- **mregister**: command that allow registering to several servers

How to use collective.dist ?
============================

**mregister** and **mupload** are replacing `register` and `upload` commands
and work with an extended version of the `.pypirc` file.

In order to work with it, change your `.pypirc` file this way::

    [distutils]
    index-servers = 
        pypi

    [pypi]
    username:user 
    password:password

Where `user` and `password` are your `PyPI` users.

With the latest changes, if *password* is omitted the user will be prompt 
to type it when needed.
 
You can then start to use the `mregister` and `mupload` commands, instead 
of the usual `register` and `upload` calls.

A typical call to upload your file would be::

    $ python setup.py mregister sdist mupload

To deal with several PyPI-like servers, you can add them in your
`.pypirc` file. 

For example, if you want to be able to push your packages to : 

- PyPI
- plone.org
- your own private PyPI (by using PloneSoftwareCenter for example)

You can write your `.pypirc` file like this::

    [distutils]
    index-servers = 
        pypi
        plone.org
        mycompany


    [pypi]
    username:user 
    password:password

    [plone.org]
    repository:http://plone.org/products
    username:ploneuser
    password:password

    [plone.org]
    repository:http://my.company/products
    username:user
    password:password

From there, you will be able to work with the different servers, 
with the `-r` option::
    
    $ python setup.py mregister sdist mupload -r http://plone.org

You can even use the section name instead of the url::

    $ python setup.py mregister sdist mupload -r plone.org

**If your package uses setuptools**, you can even create aliases to simplify
the command::

    $ python setup.py alias plone_release mregister sdist mupload -r plone.org  # creates the alias
    $ python setup.py plone_release # run the whole sequence

Another usage is to deal with several profiles on PyPI itself::

    [distutils]
    index-servers = 
        pypi
        pypi-personal

    [pypi]
    username:user 
    password:password

    [pypi-personal]
    username:user2 
    password:password2
 
