If you don't heed those caveats, suit your mcs!
Angelos is a project with many requirements that affects a lot of design decisions. It is a client/server system that is mainly prototyped in Python, it should work at as many platforms as possible in as many formats available.
Server wise it should support Windows, Linux (several) and BSD's while it is written in Python, being compiled using Cython and bundled with PyInstaller and distributed as RPM and Deb packages.
Client wise it should support macOS, Windows, Linux (with various desktops), iOS and Android. Written in Python, compiled by Cython, bundled and distributed with PyInstaller/Buildozer and others. With a ton of packages with sub dependencies behaving differently depending on the platform, Python version, and packaging methods.
This is a major headache and requires a lot of attention!
Don't put any code or business logic within the package __init__ files. Especially don't import and export classes and functions here! PyInstaller in combination with Cython is unable to see the difference between modules and sub-packages with the same name. Therefore PyInstaller gets confused and goes nuts:
- Either goes into an infinite recursive loop at compile-time, or
- Can't load modules at runtime.
The Logo Messenger distribution for macOS must be linked using Python 3.8 because of a bug in how subprocesses are spawned. This is vital for the keyring module which plyer depends on. This is necessary for the client to be able to store keys and passwords securely on macOS. If the subprocesses are spawned the wrong way keyring can't access the macOS keyring.
Building a Kivy application with Anaconda kivy package is not recommended. The conda kivy builds applications with pygame which is deprecated, and don't support high resolution screens.