summaryrefslogtreecommitdiff
path: root/TODO.python
blob: 16b7889abb7110eb3f0412819c9fec11751de4c1 (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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
TODOs
-----

* if homepage_url (in the pypi metadata for a given pacakge) is a html page,
scrape the page for repo links, this should reduce the number of tarball
imports the tool does.

* scheme x.y e.g. pip.find_deps should avoid using a '.' makes it more
difficult to import extensions as modules, consider the case where we want
to import pip.find_deps for use in a test suite.

* prefix cmd to logs, so when we run pip, prefix log msg with 'pip',
same for egg_info etc

* abstract popen/log,
there is a pattern of calling Popen with stderr=STDOUT and reading
from p.stdout till EOF, then waiting for the subprocess to terminate.
Since this is used in 3 places, it should be factored out really.

* error messages for constraints is currently a parsed form of the version
number e.g. ('==', ('00000000', '00000000',      '00000011', '*final'))
this will be confusing, we should emit nice version numbers.

* Can we avoid the compilation that happens during import of some packages,
i.e. nixtla

* add a test runner

* Importing python packages that use pbr fails, see
https://bitbucket.org/pypa/setuptools/issue/73/typeerror-dist-must-be-a-distribution#comment-7267980
The most sensible option would seem to be to make use of the sane environment
that pbr provides: just read the dependency information from the text files
that pbr projects provide, see, http://docs.openstack.org/developer/pbr/

Results from running the import tool on various python packages follow:

* Imports tested so far (stratum is generated)
    * SUCCEEDS
        * nixtla: fine but requires compilation
        * ryser
        * Twisted
        * Django
        * textdata
        * whale-agent
        * virtualenv
        * lxml
        * nose
        * six
        * simplejson
        * pika
        * MarkupSafe
        * zc.buildout
        * Paste
        * pycrypto
        * Jinja2
        * Flask
        * bcdoc
        * pymongo

    * FAILS
        * python-keystoneclient
            * All openstack stuff requires pbr, pbr does not play nicely with
                current setuptools see: [Issue 73](https://bitbucket.org/pypa/setuptoolsissue/73/typeerror-dist-must-be-a-distribution#comment-7267980)
            we can either fix setuptools/pbr or make use of the sane environment
            pbr provides.
        * persistent-pineapple
            * Git repo[1] has different layout to tarball[2] downloadeable from pypi,
            git repo's layout isn't 'installable' by pip, so dependencies can
            not be determined.
            [1]: https://github.com/JasonAUnrein/Persistent-Pineapple
            [2]: https://pypi.python.org/packages/source/p/persistent_pineapple/persistent_pineapple-1.0.0.tar.gz
        * ftw.blog
            * cannot satisfy dependencies
        * boto
            * cannot satisfy dependencies
        * jmespath
            * cannot satisfy dependencies
        * rejester
            * its setup.py subclasses distutils.core
        * requests
            * cannot satisfy dependencies
        * MySQL-python
            * egg_info blows up,
            * python setup.py install doesn't even work
            * maybe the user's expected to do some manual stuff first, who knows
        * rejester (its setup.py subclasses distutils.core)
        * redis-jobs (succeeded at first, no longer exists on pypi)
        * coverage (stratum couldn't be generated because some tags are missing)

* Imports completely tested, built, deployed and executed successfully:

    * Flask