Shipping python modules - best practices?

R

rambius

Hello,

I developed some moderate-sized python scripts that I would like to distribute as python modules. I have never shipped modules before and I read http://docs.python.org/distutils/index.html. I was able to generate a source distribution, but I still have some questions.

1) My module contains some unit tests in separate scripts. I want to execute them when I generate the source distribution. How can I do it?

2) When I install 3rd party modules, I see some of them executing their unit tests during the installation. How can I do it? How can I provide an option to the user to ignore possible test failures?

3) I generate some html documentation with pydoc. How shall I distribute itwith the module?

Thank you very much in advance.

Regards
rambius
 
D

Demian Brecht

1) IMHO, these should be two distinct steps. You will definitely want to run unit tests without sdist and likewise, I'm sure you'll want to sdist without unit tests. Personally, if I wanted to combine the two, I'd create tasks in a makefile and just run something along the lines of: make unit sdist

2) I don't understand why you'd want to run unit tests during installation. Unit tests are generally used pre-commit to ensure everything's working as expected in your environment and post commit to ensure there are no knock-on effects caused by your changes to the current code base. Running them during installation seems rather strange and useless to me..

3) Docs are generally stored in a /doc directory at the root of your project. I haven't used pydoc, but if it's anything like sphinx, then best practice is to commit the source for your docs and have the users using the project generate the static content themselves (usually done through a make target).

Hello,

I developed some moderate-sized python scripts that I would like to distribute as python modules. I have never shipped modules before and I read http://docs.python.org/distutils/index.html. I was able to generate a source distribution, but I still have some questions.

1) My module contains some unit tests in separate scripts. I want to execute them when I generate the source distribution. How can I do it?

2) When I install 3rd party modules, I see some of them executing their unit tests during the installation. How can I do it? How can I provide an option to the user to ignore possible test failures?

3) I generate some html documentation with pydoc. How shall I distribute it with the module?

Thank you very much in advance.

Regards
rambius

Demian Brecht
@demianbrecht
http://demianbrecht.github.com
 
D

Demian Brecht

I should also mention that these are just my personal best practices that I've put together during my time working with/on OS projects. You'll almost never find two projects with identical packaging, so really at the end of the day, it's totally up to you and your particular project requirements.

1) IMHO, these should be two distinct steps. You will definitely want to run unit tests without sdist and likewise, I'm sure you'll want to sdist without unit tests. Personally, if I wanted to combine the two, I'd create tasks in a makefile and just run something along the lines of: make unit sdist

2) I don't understand why you'd want to run unit tests during installation. Unit tests are generally used pre-commit to ensure everything's working as expected in your environment and post commit to ensure there are no knock-on effects caused by your changes to the current code base. Running them during installation seems rather strange and useless to me..

3) Docs are generally stored in a /doc directory at the root of your project. I haven't used pydoc, but if it's anything like sphinx, then best practice is to commit the source for your docs and have the users using the project generate the static content themselves (usually done through a make target).

On 2012-10-27, at 7:02 AM, rambius <[email protected]> wrote:

Demian Brecht
@demianbrecht
http://demianbrecht.github.com
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,009
Latest member
GidgetGamb

Latest Threads

Top