Differences between revisions 4 and 5
Revision 4 as of 2011-04-15 13:06:25
Size: 8560
Editor: 124
Comment:
Revision 5 as of 2011-04-17 04:26:38
Size: 8389
Editor: 113
Comment:
Deletions are marked like this. Additions are marked like this.
Line 16: Line 16:
''(Under normal circumstances, people use the distutils to build a distribution of a project by rebuilding or reinstalling the project every time he made a change to it during development. So it’s a very important feature that setuptools offers to users, especially developers using version control system to manage code, which allows users to deploy their projects for use in a common directory or staging area, but without copying any files. However, Distutils2 doesn’t support this important command currently. Thus the job with the highest priority is to add the ‘develop’ command and fix the bug http://bugs.python.org/issue8668)'' ''(Under normal circumstances, people use the distutils to build a distribution of a project by rebuilding or reinstalling the project if he want to know whether the changes he has made work or not during development. So it’s a very important feature that setuptools offers to users, especially developers using version control system to manage code, which allows users to make the code apear as installed to Python and other code can import it, but without copying any files. However, Distutils2 doesn’t support this important command currently. Thus the job with the highest priority is to add the ‘develop’ command and fix the bug http://bugs.python.org/issue8668)''
Line 19: Line 19:
 *June 1~June 7: fulfill the function to create the .pth file and use PEP376 new apis to read metadata from .dist-info to create wrapper scripts
 *June 8~June 14: fulfill other parameters of the ‘develop’ command as in setuptools
 *June 15~June 20: create the patch, then fix the bug.
 *June 1~June 7: fulfill the function to create the .pth file and function to create wrapper scripts
 *June 8~June 10: fulfill the function to generate .dist-info dirs in place
 *June 11~June 15: fulfill all
parameters of the ‘develop’ command as in setuptools
 *June 16~June 20: write tests to all newly added and modified functions
Line 23: Line 24:
''(Packaging and installing script can be a bit awkward with the distutils, and there is no easy way to have a script’s filename match local conventions on both Windows and POSIX platforms. Setuptools fixes these problems by defining ‘entry points’ in setup script. An opensource or free software always faces such kind of platform problems. As a outstanding packaging tool and perfect substitution of setuptools, it’s important to add this function for Distutils2.Thus, the second job is to add automatic script creation function for Distutils2 and fix the bugs –issue870479: http://bugs.python.org/issue870479 ,issue976869: http://bugs.python.org/issue976869 )'' ''(There is no easy way to have an executable script’s filename match local conventions on both Windows and POSIX platforms. Setuptools fixes it by defining ‘console_scripts’ or 'gui_scripts' entry points in setup script, which can automatically generating scripts for you with the correct extension, e.g. .exe for windows. It will take great convience to users who want to make his work run on different platforms, thus, the second job is to add automatic script creation function for Distutils2 and fix the bugs –issue870479: http://bugs.python.org/issue870479 ,issue976869: http://bugs.python.org/issue976869 )''
Line 25: Line 26:
'''June 21- July 11: add the automatic script creation function'''
 *June 21~June 25: study the background and discussing details of bug issue870479 and test the patch already submitted by others
 *June 26~June 30: study the background and discussing details of bug issue976869 and review the patch
 *July 1~July 4: read documents and source code of setuptools automatic script creation function
 *July
5~July 10: add automatic script creation function for Disutils2
 *July 11: create the patch and fix these two bugs: issue870479, issue976869
'''June 21- July 11: add the automatic script creation functionality'''
 *June 21~June 22: study the background and discussing details of bug issue870479 and review the patch already submitted by others
 *June 23~June 24: study the background and discussing details of bug issue976869 and review the patch submitted
 *June 25~June 30: read documents and source code of setuptools automatic script creation
 *July 1~July 7: write
functions to realize automatic script creation for Disutils2
 *July 8~July 11: write tests to changes
Line 39: Line 40:
 *Aug 5~Aug 11: strength the documents
 *Aug 12~Aug 15: report all these work to Distutils2 administrator
 *Aug 5~Aug 8: write tests for newly added or modified functions
 *Aug 9~Aug 15: strength early documents and write new documents for new changes
Line 46: Line 47:
 *Configure development environment: python, revision control, email, skype, irc, etc.
Line 57: Line 57:
 *.pth file can be created on site-packages
Line 59: Line 58:
 *all parameters in setuptools should be supported, e.g. --multiversion, --install-dir, and so on
 *‘develop’ command patch should be submitted
 *most parameters in setuptools should be supported

Abstract

Distutils2 is the new, improved version of the Python Distribution Utilities, a library used to package, distribute,build and install Python projects. It will be as a substitute of current setuptools, but it’s still in its early stage. This project is supposed to fill the gap for setuptools users that want to move to packaging in two aspects:

  1. add the ‘develop’ command for Distutils2;
  2. add the automatic script creation function;
  3. perfect the extensions project.

Milestones

The following is just a very preliminary plan about what ‘product’ or improvement should be realized at what time. And the specific time and milestones maybe adjusted in future development if necessary after careful communication with mentor.

My week-by-week work plan:

May 25-May 27: have a good communication with mentor to understand the project better and know the preparation work

May 28-May 31: get all preparation work done

(Under normal circumstances, people use the distutils to build a distribution of a project by rebuilding or reinstalling the project if he want to know whether the changes he has made work or not during development. So it’s a very important feature that setuptools offers to users, especially developers using version control system to manage code, which allows users to make the code apear as installed to Python and other code can import it, but without copying any files. However, Distutils2 doesn’t support this important command currently. Thus the job with the highest priority is to add the ‘develop’ command and fix the bug http://bugs.python.org/issue8668)

June 1-June 20: begin to code and fulfill the ‘develop’ command

  • June 1~June 7: fulfill the function to create the .pth file and function to create wrapper scripts
  • June 8~June 10: fulfill the function to generate .dist-info dirs in place
  • June 11~June 15: fulfill all parameters of the ‘develop’ command as in setuptools
  • June 16~June 20: write tests to all newly added and modified functions

(There is no easy way to have an executable script’s filename match local conventions on both Windows and POSIX platforms. Setuptools fixes it by defining ‘console_scripts’ or 'gui_scripts' entry points in setup script, which can automatically generating scripts for you with the correct extension, e.g. .exe for windows. It will take great convience to users who want to make his work run on different platforms, thus, the second job is to add automatic script creation function for Distutils2 and fix the bugs –issue870479: http://bugs.python.org/issue870479 ,issue976869: http://bugs.python.org/issue976869 )

June 21- July 11: add the automatic script creation functionality

  • June 21~June 22: study the background and discussing details of bug issue870479 and review the patch already submitted by others
  • June 23~June 24: study the background and discussing details of bug issue976869 and review the patch submitted
  • June 25~June 30: read documents and source code of setuptools automatic script creation
  • July 1~July 7: write functions to realize automatic script creation for Disutils2
  • July 8~July 11: write tests to changes

(extensions is a simple plugin system inspired from setuptools entry points and it allows an application to define or use plugins. This feature offers to user great convenience to develop big systems composed of different components. So the third job is to help perfect the extensions project if necessary.)

July 12~Aug 15: check whether the extensions project can perform perfectly as setuptools entry points does in real projects and do some necessary integration work

  • July 12~July 15: read documents and source code of setuptools to get to know the principle of its entry points;
  • July 16~July 22: checkout the extensions project from bitbucket and read corresponding documents and source code
  • July 23~July 29: try to construct different test cases(real project is preferred) to check whether the extensions project can ‘produce’ correct output as expected and has fulfilled all the functions of setuptools entry points; report the bugs and fix them if necessary
  • July 30~Aug 4: enhance extensions project if it lacks some functions or it does not do job well as setuptools entry points
  • Aug 5~Aug 8: write tests for newly added or modified functions
  • Aug 9~Aug 15: strength early documents and write new documents for new changes

Start of Program (May 24)

  • Create a project on bitbucket
  • Create a page on python wiki
  • Get familiar with Python’s bug tracker
  • Read PEP376 and PEP345 details
  • Look into ‘develop’ command in setuptools
  • Look into setuptools entry points
  • Look into setuptools automatic script creation
  • Make preliminary plan and list it on python wiki page

Midterm Evaluation (July 12)

Before midterm evaluation, ‘develop’ command and the automatic script creation function should be fulfilled and corresponding bugs fixed. Thus the proposed deliverables can be:

  • Wrapper scripts can be created
  • most parameters in setuptools should be supported
  • Fix bug issue8668
  • Fix bug issue870479
  • Fix bug issue976869
  • The patch of automatic script creation should be submitted.

Final Evaluation (Aug 16)

Before final evaluation, work for the extensions project makes it perform better as setuptools entry points. The detail is:

  • Test cases for extensions project constructed
  • Documents of extensions project enhanced
  • the extensions project is more 'close' to setuptools entry points, or even more powerful

About Me

I'm an undergraduate from China and I'm preparing for my computer science and technology bachelor degree in USTB (University of Science and Technology Beijing). Java and Python is the main programming language when I write programs and software. During my coding days, I’m getting to know more and more about the Open-Source/FOSS, especially its spirits-share, collaborate, make friends. Every time I find an excellent solution about some problems occurred to me, I become so excited and learned a lot from the process of problems finding-reporting-solving.

My Strengths:

  • Good communication skill with email, irc, and skype
  • Good knowledge of revision control. Although I always use TortoiseSVN to host my project and do daily coding, it’s not a big problem for me to use Mercurial to manage Python projects, and I also will spend much time on reading the user's guide and other helpful documents to get myself familiar with it.
  • Good problems-solving ability. If there are some problems, I will at first try to find useful information from the user and developer documents, then search in the Google to look into if other people have the same or similar problem and give the solution. What the wonderful thing is that I always can find many discussing emails or archives in the google group or bug repositories, and it is the time that I begin to know and get familiar with Eclipse bugzilla and Python bug tracker.
  • Formal education in programming. My major is computer science and technology.
  • Adequate time. Most of the time is among my summer vocation, so time is ok for me. 40 hours a week is also no problem.

My weak points:

  • Not very good knowledge of Distutils2. I can spend much more time on reading the useful documents and get myself familiar with Distutils2 and other packaging components.
  • Different timezone. I’m in China, so there maybe a problem when communicating with mentor. But email, skype and irc all are very good tools to solve this problem.
  • Not very familiar with Python bug tracker. Actually, I’m new for the Python bug tracker and even have not yet registered an account. These days I spent much time on reading discussing contents in it, and I will register ASAP.

Contact Info

  1. Name: Xu Dehai(You can call me with my English name-higery)

  2. Blog: http://wiki.python.org/moin/SummerOfCode/2011/SetuptoolsFeatures

  3. Email: shoulderhigher@gmail.com

  4. IRC: higery on irc.freenode.net

  5. Skype: shoulderhigher@gmail.com

  6. Phone: (86)18777502978
  7. Postal Address: NO257 MINZHU MIDDLE ROAD
  8. City, State, Zip, Country: YULIN, GUANGXI, 537000, CHINA

SummerOfCode/2011/SetuptoolsFeatures (last edited 2011-04-24 15:16:24 by 113)

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