How to Contribute
linusg-github edited this page May 15, 2016
·
4 revisions
Pages 39
- Home
- About
- Build Bootloader Win64
- Community
- Development
- Development Commit Messages
- Development Release
- Development Workflow
- FAQ
- Feature Ctypes Dependencies
- Features
- how to apply pull requests
- How to Contribute
- How to Report Bugs
- If Things Go Wrong
- License
- Program Tracing
- Projects Using PyInstaller
- Python 3 Port
- Recipe Collect Data Files
- Recipe Executable From Django
- Recipe Grab Window Focus
- Recipe Gtk Application
- Recipe Multiprocessing
- Recipe OpenSSL Certificate
- Recipe OSX Code Signing
- Recipe PyQt4 API Version
- Recipe python daemon package
- Recipe pytz zip file
- Recipe remove tkinter tcl
- Recipe Setuptools Entry Point
- Recipe subprocess
- Recipe Win Code Signing
- Recipe Win Load External DLL
- Recipes
- Running the test suite
- Search Helpers
- Supported Packages
- Trac Ticket Migration
- Show 24 more pages…
Clone this wiki locally
You are very welcome to contribute!
Since as of now all core-developers are working on PyInstaller in their spare-time, you can help us (and the project) most if you are following some simple guidelines. The higher the quality of your contribution, the less work we have incorporating them and the earlier we will be able to incorporate them :-)
Some thing to keep in mind:
- Supported Python version for PyInstaller 2.2 dev is Python 2.6 and 2.7. You code should be compatible with this version. For Python 3.x there is python3 branch.
- Please follow your commit guidelines at Development Commit Messages.
- Commit often and in logical chunks, see Development guidelines for commits.
- Every
.pyfile should contain comment header
#-----------------------------------------------------------------------------
# Copyright (c) 2005-2016, PyInstaller Development Team.
#
# Distributed under the terms of the GNU General Public License with exception
# for distributing bootloader.
#
# The full license is in the file COPYING.txt, distributed with this software.
#-----------------------------------------------------------------------------If you plan to contribute frequently, just ask for write access to the main git repository. We would be glad to welcome you in the team!
And this is how it works:
- Create an account on https://github.com
- Create a fork of project pyinstaller/pyinstaller on github.
- Set up your git client by following this documentation on github.
- Clone your fork to your local machine.
git clone git@github.com:GIT_USERNAME/pyinstaller.git- If you are going to implement a hook, start with creating a minimalistic build-test (see below). You will need to test your hook anyway, so why not use a build-test from the start?
- Incorporate your changes into PyInstaller.
- Test your changes by running ''all'' build tests to ensure nothing else is broken. Please test on as many platform as you can.
- Push you work up to your fork on github.
- Create a pull request on github.
- For syncing your fork with the PyInstaller upstream repository see syncing a fork at github
The test workflow:
- If those tests will be interactive (user has to click on a button), then it should go into
./tests/interactive/, test for hooks (and suchlike) go into./tests/libraries/. If you are working on a core function,./tests/basic/or./tests/import/are appropriate. - If you have more test files, create them with file name prefix
test_yourtest_. - If your test should be run in
--onefilemode then create it with file name prefixtest_onefile_ - Usually for a test you do not need create
.specfile. It will be created automatically. - If your test needs special options or settings then you probably need to create
.specfile. If so then append your test file name to the listSPEC_FILEin./tests/runtests.pyotherwise your .spec file will be removed. - If your test depends on some libraries, append test name and required libraries to the list
self.MODULESin./tests/runtests.py. - If your test is just for a specific OS or Python version append your test name to the list
self.MIN_VERSION_OR_OSin./tests/runtests.py. - To run a single test:
cd tests
python runtests.py libraries/test_yourtestname- To run all tests:
cd tests
python runtests.py - To run all interactive tests:
cd tests
python runtests.py -i- Test success depends on zero exit status of created binary.