Developer notes

Notes about code

Use eduvpn.util.thread_helper(lambda: func(arg='arg') to schedule long running actions from the UI (main) thread.

Use GLib.idle_add(lambda: func(arg='arg') to schedule UI updates back on the main thread.

Never call GTK functions directly from the background thread.

eduvpn.actions are the entrypoints to the application and are triggered from the main menu or a VPN status change.

eduvpn.steps contains all the various steps in the application flow.

eduvpn.remote contains all remote requests.

`eduvpn.other_nm is a fork of the python NetworkManager wrapper.

Flow schema

The application flow

How to make a release

  • Determine version number (for example 1.0.2)
  • Compose a list of changes (check issue tracker)
  • Make sure the test suite runs with python3
  • Set version number in setup.py, and eduvpn.spec
  • add changes to CHANGES.md
  • Commit
  • Press release button on github. List all changes here also
  • Check if github actions builds.
  • Do a manual wheel upload using twine:
$ rm dist/*
$ python setup.py bdist_wheel sdist
$ twine upload dist/*
on copr -> builds -> new build -> scm.
clone URL: https://github.com/eduvpn/python-eduvpn-client
Committish: branch or tag
spec file: eduvpn.spec
Build for all supported/configured platforms
at the moment they are centos8, fedora 33 and fedora 34.