Differences between revisions 2 and 3
Revision 2 as of 2011-04-15 12:49:02
Size: 8493
Editor: 124
Comment:
Revision 3 as of 2011-04-15 12:52:26
Size: 8493
Editor: 124
Comment:
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
    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. 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.
Line 5: Line 8:
    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. 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.
Line 52: Line 55:
    Before midterm evaluation, ‘develop’ command and the automatic script creation function should be fulfilled and corresponding bugs fixed. Thus the proposed deliverables can be: Before midterm evaluation, ‘develop’ command and the automatic script creation function should be fulfilled and corresponding bugs fixed. Thus the proposed deliverables can be:
Line 64: Line 67:
    Before final evaluation, work for the extensions project makes it perform better as setuptools entry points. The detail is: Before final evaluation, work for the extensions project makes it perform better as setuptools entry points. The detail is:
Line 71: Line 74:
    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. 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.
Line 88: Line 91:
Line 89: Line 93:
Line 90: Line 95:
Line 91: Line 97:
Line 92: Line 99:
Line 93: Line 101:
Line 94: Line 103:
Line 95: Line 105:

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 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)

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 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.

(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 )

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

(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 11: strength the documents
  • Aug 12~Aug 15: report all these work to Distutils2 administrator

Start of Program (May 24)

  • Create a project on bitbucket
  • Create a page on python wiki
  • Configure development environment: python, revision control, email, skype, irc, etc.
  • 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:

  • .pth file can be created on site-packages
  • Wrapper scripts can be created
  • all parameters in setuptools should be supported, e.g. --multiversion, --install-dir, and so on
  • ‘develop’ command patch should be submitted
  • 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

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

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

Email: shoulderhigher@gmail.com

XMPP:

IRC: higery on irc.freenode.net

Skype: shoulderhigher@gmail.com

Phone: (86)18777502978

Postal Address: NO257 MINZHU MIDDLE ROAD

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.