summaryrefslogtreecommitdiff
path: root/setuptools/__init__.py
blob: 6fb8511188484aa3b1d619cdb178ffdc0cc48dab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
"""Extensions to the 'distutils' for large or complex distributions"""

import distutils.core, setuptools.command
from setuptools.dist import Distribution, Feature
from setuptools.extension import Extension
from distutils.core import Command
import os.path

__all__ = [
    'setup', 'Distribution', 'Feature', 'Command', 'Extension', 'findPackages'
]


def findPackages(where='.', prefix='', append=None):
    """List all Python packages found within directory 'where'"""

    out = []
    if not append:
        append = out.append

    for name in os.listdir(where):
        fn = os.path.join(where,name)
        if (os.path.isdir(fn) and
            os.path.isfile(os.path.join(fn,'__init__.py'))
        ):
            append(prefix+name)
            findPackages(fn,prefix+name+'.',append)
    return out


def setup(**attrs):
    """Do package setup

    This function takes the same arguments as 'distutils.core.setup()', except
    that the default distribution class is 'setuptools.dist.Distribution'.  See
    that class' documentation for details on the new keyword arguments that it
    makes available via this function.
    """
    attrs.setdefault("distclass",Distribution)
    return distutils.core.setup(**attrs)