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
|