GPyPi2 — Google Summer of Code week #4
Greetings, following is the weekly update for gpypi2 project. It's main purpose is to generate ebuilds from Python Package Index. Quick links to project info:
- Repository, issue tracker
- Hudson CI instance
- Sphinx documentation generated by hudson on each commit
- wiki/user stories for scrum development
I'm more than happy to announce first pre-alpha prototype. Intended goal is to make people start using the tool and reporting back their critics.
Install gpypi2
$ sudo pip install http://bitbucket.org/iElectric/g-pypi2/get/tip.zip
or
$ sudo easy_install http://bitbucket.org/iElectric/g-pypi2/get/tip.zip
Create an ebuild
$ sudo gpypi2 create flask
* Generating ebuild: Flask 0.4
* Your ebuild is here: /usr/local/portage/dev-python/flask/flask-0.4.ebuild
* Dependency needed: Werkzeug
* Dependency needed: Jinja2
* Generating ebuild: Werkzeug 0.6.2
* Your ebuild is here: /usr/local/portage/dev-python/werkzeug/werkzeug-0.6.2.ebuild
* Generating ebuild: Jinja2 2.5
* Your ebuild is here: /usr/local/portage/dev-python/jinja2/jinja2-2.5.ebuild
* Dependency needed: Babel
* Generating ebuild: Babel 0.9.5
* Your ebuild is here: /usr/local/portage/dev-python/babel/babel-0.9.5.ebuild
NOTE: ebuilds will probably not function yet, features are yet to be completed/added. Report bugs to `issue tracker <http://bitbucket.org/iElectric/g-pypi2/issues?status=new&status=open>`_.
Previous week (15-21 June)
Main goal of previous week was to get closer to first prototype. Done.
Task: First snippet of command line interface
Put enough together to assemble ebuilds from command line. I think many issues may pop up, and lots of bugs shall be fixed. I'm currently mostly doing stuff from my head, with not much practise whatsoever. Mostly, we should get a result of better test coverage (currrently about 50%). The only component left untouched is the configuration. I would like to touch this topic after all my exams are over, leaving me time and productivity.
Command line interface was added, test coverage is up to 60%. Lots of small fixes were done. As a bonus, I added portage output syntax colors.
Task: get_dependencies - another refactor to enamer
Title says it all. Also handling of multiple version operators should be added. Example: foobar>=0.5&& foobar<0.6 should resolve in <0.6 blocker and >=0.5 requirement.
Multiple operators on version dependencies are handled as blockers, implemented in tip. However get_dependencies was not refactored, since I still might be adding functionality. Not really necessary for now.
Upcoming week (22-28 June)
Task: Use SrcUriNamer
gpypi2.enamer.SrcUriNamer is awaiting for quite 2 weeks now to be finally used. It's basically factory that generates SRC_URI and HOMEPAGE according to mirror provider. A lot of additional refactoring will be needed to Enamer to use this utility instead of current guessing/parsing.
Task: Fix bugs reported by users
Lot of bugs are going to pop up; fix bugs, write tests and add documentation.
Task: Increase test coverage
I'm still not satisfied with test coverage. I'll try to increase it a bit more. It's 10 days week of exams on my university, soon I will be able to put in more effort in implementing features.
Cheers, Domen