Differences between revisions 3 and 4
Revision 3 as of 2011-06-24 10:48:48
Size: 3173
Editor: 129
Comment: Remove my misguided example
Revision 4 as of 2011-07-11 14:17:31
Size: 3548
Editor: 64
Comment: Clarifying use case one.
Deletions are marked like this. Additions are marked like this.
Line 15: Line 15:
One has a foobar project in which a 'foobar' directory is the one his setup.{py,cfg} actually supposed to install, but he also has additional Python packages alongside 'foobar', e.g. a 'tests' directory. Carl has a foobar project which contains a 'foobar' directory that is referenced in his setup.{py,cfg} as the a package to be installed. He also has additional Python packages alongside 'foobar' (e.g. a 'tests' directory), which he does not want installed.
Line 17: Line 17:
'''What he wants:''' {{{
.
|-- foobar
| |-- __init__.py
| |-- bar.py
| `-- foo.py
|-- setup.cfg
`-- tests
    |-- __init__.py
    |-- test_bar.py
    `-- test_foo.py
}}}
Line 19: Line 30:
 * 'tests' should not be importable, because it's not what he really wants '''Type:'''
Feature request

'''Requirements:'''

 * The 'tests' directory, or any directory not referenced in the setup.{cfg,py} for install, should not be importable, because it could have an unintended collision with other installed packages.

Some use cases of the 'develop' command

The 'develop' command is used to pseudo-install a project source without copying any files, which is a useful feature of setuptools and will be implemented for packaging.

However, different people may have different purposes and will use 'develop' in a very different way, so even though we argued a lot in the mailing list but have not yet reach an extensive consensus on how the future 'develop' of packaging should behave.

Thus this page is created just to collect different use cases being talked about in our fellowship list, which will be taken as an important idea base to implement an elegant solution that work for all at the most extent.

Note: These use cases are not complete and people can help me enhance.

Use Case 1 (from Carl)

Story Description: Carl has a foobar project which contains a 'foobar' directory that is referenced in his setup.{py,cfg} as the a package to be installed. He also has additional Python packages alongside 'foobar' (e.g. a 'tests' directory), which he does not want installed.

.
|-- foobar
|   |-- __init__.py
|   |-- bar.py
|   `-- foo.py
|-- setup.cfg
`-- tests
    |-- __init__.py
    |-- test_bar.py
    `-- test_foo.py

Type: Feature request

Requirements:

  • The 'tests' directory, or any directory not referenced in the setup.{cfg,py} for install, should not be importable, because it could have an unintended collision with other installed packages.

Use Case 2 (from Tarek)

Story Description: One wants to install something inplace with 'develop' command.

What he wants:

  • does not need to run sudo to install, which means 'develop' will not touch the site-packages at all

Use Case 3 (from Tarek)

Story Description:

One has a foobar project and he is in its project source tree, then he runs 'develop' in it. In addition, the virtualenv has not yet installed and he doesn't want to install it at that time.

What he wants:

  • foobar seems installed for him
  • foobar should not be shared with the whole system, or with everyone

Use Case 4 (from Carl)

Story Description: One has a private VPS that hosts a number of Mercurial repositories. In addition, he has some custom plugins and hooks that need to run for all users of the server. These plugins and hooks are frequently updated.

What he wants:

  • don't have to bump version numbers and make releases all the time

Use Case 5 (from Doug)

Story Description: There is a python development team and his application cann't work in a virtualenv for a variety of reasons.

What he wants:

  • install into the global site-packages in 'development mode'

Use Case 6 (from Doug)

Story Description: One is working on a foobar project and he has opened a python intepreter(we call it INTPT-A).

What he wants:

  • all applications using INTPT-A can see foobar, without having to use an environment variable
  • don't need to manually edit any files to configure the path for INTPT-A
  • any application using INTPT-A doesn't need to be run from its particular directory on the filesystem in order to see the changes or his package
  • all entry points, including console scripts, are registered correctly with INTPT-A
  • can edit files in his project and re-run the intepreter to have the changes picked up, without having to redo the 'python setup.py develop' or 'pysetup.py develop' step

UsecasesOfDevelop (last edited 2011-07-12 00:55:59 by c-71-58-94-39)

Unable to edit the page? See the FrontPage for instructions.