Skip to content

Latest commit

 

History

History
141 lines (89 loc) · 3.94 KB

BUILD.rest

File metadata and controls

141 lines (89 loc) · 3.94 KB

BUILD

This document describes the technical details of the RIDE project:

  • How to build, run and test RIDE
  • What's in the source
  • How to contribute
  • How to make a release
  • Settings migrations

Developing

It is recommended to use Virtualenv as a development Python environment.

Necessary development dependencies can be installed with:

pip install -r requirements.txt

RIDE uses Invoke as it's task runner. Packaging, testing, and running a development version without installation can all be done using Invoke. Run:

invoke --list

for more information.

MacOS 10.7 - 10.8

wxPython is limited to running in 32-bit mode. Python itself should thus be executed in 32-bit mode. This can be done by setting:

export VERSIONER_PYTHON_PREFER_32_BIT=yes

MacOS 10.9+

wxPython 2.8 is still limited to run in 32-bit mode. It must be launched with the command

arch -i386 /usr/bin/python /usr/local/bin/ride.py

Repository contents

Repository contains source code, unit tests, and some helper scripts for development and package generation.

Source code

Source code is located in src directory. src/bin contains installed start scripts and src/robotide contains the actual source code.

Unit tests

Unit tests are in utest directory. They can be executed with:

invoke test

Contributing

Fork and send a pull request! To enhance the possibility of getting the pull request merged, read guidelines below.

Coding guidelines

In general, all the code should be written according to Style Guide for Python Code [5] However, as stated in the Zen of Python, practicality beats purity.

Method names

Typically, we use lowercase_with_underscore style for method names. Of course, when overriding wx methods, AllCapitalized style must be used. Additionally, there's a special case when writing event handler methods. We have chosen to name event handlers following this pattern: OnEventName (e.g. OnMouseClick).

http://www.python.org/dev/peps/pep-0008/

Releasing

  • Release early and often!

  • Consider making a preview release - this will give you possibility to test the new release with friendly real users

  • Manually test run RIDE in windows, linux and OSX

  • Primary distribution channel is PyPi.

  • Following steps are needed for a final release. Updating release notes plugin is optional for pre-releases:

    > invoke test
    > invoke version 1.xx
    > invoke register
    > invoke sdist --upload
    > git commit -am 'Version 1.xx'
    > git tag 1.xx
    > git push --tags
    
  • For final releases, create Windows installer with following command and upload it to GitHub:

    > invoke wininst
    
  • Release notes in markdown format can be created with:

    > invoke release_notes
    
  • Announce on usergroup, robot homepage, and twitter

Settings migration

RIDE has a user specific configuration file that you usually don't need to worry about. But sometimes old configurations should be changed during RIDE version update. For example when the old configuration had a bug or new RIDE uses a differing kind of configuration parameter then the old version.

For these situations I've created a configuration migration system that can do these changes when a new version of RIDE is taken in to use. The migrator is currenlty (10.8.2012) located at preferences/settings.py/SettingsMigrator.

The mechanism works in the following way:
  • Settings have a settings_version attribute that should be updated when a new migration is needed
  • the SettingsMigrator.migrate method should be updated so that it will also do the new migration
  • You only need to add a migration from the previous version to current (the migrate method will handle all the older versions -

so only the last configuration delta is needed)

Hope this helps when persistent things change a lot.