Developer notes¶
Notes about code¶
Use the decorator eduvpn.utils.run_in_background_thread
to schedule long running action
in the background to avoid blocking the main thread.
Never call GTK functions directly from a background thread,
use eduvpn.utils.run_in_main_gtk_thread
to decorate functions
that must run on the main thread (eg. UI updates).
This library closely follows eduvpn-common. To see the API for that, see here
Most of the interaction with this library is in eduvpn.app
, the ui
is in eduvpn.ui.ui
and the cli in eduvpn.cli
. In these files
you can see lots of state transitions defined. The state transitions
that are used are closely in line with the Finite State machine from
the eduvpn-common library. A figure for this state machine can be
found here.
Running the tests¶
To run the automated tests, use the following command from the root of the project.
$ pytest
How to make a release¶
Prepare the code¶
- Determine version number (for example 4.1.1)
- Compose a list of changes (check issue tracker)
- Make sure the test suite runs with python3
- Set version number in
setup.py
, andeduvpn.spec
and ensure eduvpn-common has the targeted version set - add changes to CHANGES.md
- Commit
- Press release button on github. List all changes here also
- Check if GitHub Actions builds.
- The release will trigger a build on readthedocs, but the active version still needs to be set manually here: https://readthedocs.org/projects/python-eduvpn-client/versions/
Upload to PyPi¶
do a manual wheel upload using twine:
$ rm dist/*
$ python setup.py bdist_wheel sdist
$ twine upload dist/*
There is also a make shortcut:
$ make twine-upload
You should also make sure that eduvpn-common is updated in PyPi!
Building RPMs¶
We use builder.rpm, to build the RPM packages.
Build Debian packages¶
We use nbuilder.deb, to build the DEB packages.