Tikka est publié sur notre GitLab

Je viens de publier le code de Tikka sur notre GitLab.

C’est le début d’une aventure participative où les développeurs Python pourront ajouter des modules.
L’interface est à base d’onglets, ce qui facilite l’ajout de plein de fonctionnalités sans complexifier l’interface.

Je désire faire une visio sur l’organisation du code pour les développeurs Python intéressés.

La première chose à faire maintenant est la configuration de la CI/CD pour avoir un package autonome téléchargeable sur le GitLab.

J’utilise Pyinstaller qui permet de compiler un executable pour Linux, Windaube et Macos.
Mais il faut compiler sur la plateforme de destination.

J’ai un logo (merci @Attilax), mais aussi un slogan :

Avec Tikka : y a plus ka !

11 Likes

J’ai fait poetry install et wxpython est super lent à compiler… Il n’y a pas moyen d’utiliser une version déjà compilée ?

Les gens se plaignent que le Rust est très lent à compiler, mais à chaque fois que je compile un truc en C/C++ ça prend des plombes. (et encore heureusement là il n’y a pas Qt) :crazy_face:

Edit: poetry install s’est terminé avec succès, mais ensuite je ne sais pas comment lancer tikka. J’ai essayé python -m tikka mais ModuleNotFoundError: No module named 'yoyo' ; make pyinstaller mais ça fait une erreur aussi.

3 Likes

Pour utiliser Tikka à partir du dépôt, je te conseille de créer un environnement virtuel, avec une version de Python 3.6+ (mais testé que sur 3.6). Mais je suppose que tu l’as fait.

Normalement, après un poetry install, la commande tikka est disponible.

Mais python -m tikka fonctionne aussi (__main__.py est le script de démarrage).

Tikka démarre, mais l’absence de la dépendence yoyo n’est pas normale. Je vais vérifier ça demain.

Désolé pour wxPython, mais je crois que c’est comme Qt, les dépendances en C sont incluses (à vérifier) et de mémoire ce type d’installation est la méthode la plus simple et fiable (mais longue, oui).

Merci pour tes retours rapides ! L’ aventure commence !

1 Like

J’ai Python 3.9. Mais je n’ai pas fait d’environnement virtuel, je ne fais jamais ça et ce n’était pas indiqué dans le README…

Poetry semble avoir installé yoyo-migrations mais pas yoyo.

2 Likes

C’est maintenant indiqué dans le README. merci pour le retour.
C’est une bonne pratique, mais pas un pré-requis. Donc on ne peut pas l’imposer. Si tu ne fais jamais d’environnement virtuel, cela veut dire que les versions des dépendances de tous tes projets python se télescopent entre elles et modifiant aussi celles de ton python système. Et ton python système peut alors casser, faisant carrément planter ton Linux. :scream:

Je ne pense pas que l’environnement virtuel absent ce soit la cause du problème, mais cela m’aidera à isoler le problème. Plutôt la version de Python trop récente pour yoyo.
Pour en être sûr, peux-tu suivre pas à pas la nouvelle procédure du README en installant python 3.6.8 avec pyenv, puis en créant un environnement virtuel lié à python 3.6.8 avec poetry. Un environnement virtuel se crée à partir d’un version précise de python, qui ne peut plus être changée après. Le lien vers la gestion des environnements virtuels par poetry explique bien comment gérer la version de python avec pyenv.

Pour yoyo-migrations, une fois installé, on accède au package avec import yoyo… C’est surprenant, mais pas anormal. Il y a d’autres bibliothèques qui font ça. :crazy_face:

J’ai aussi déplacé la dépendance pyinstaller dans les dépendances de dev, car elle ne sert que pour le build d’un exécutable, pas pendant le runtime.

Est-ce volontaire que le dépôt soit en accès interne uniquement ?

Non pas du tout, mais je n’ai pas bien compris les droits d’accès. Je comptais voir ça avec toi.
Seuls les comptes enregistrés sont censés pouvoir agir en écriture sur le dépôt. Mais tout le monde doit pouvoir le lire et le télécharger.

Le projet peut être passé en public via cette configuration.
Je confirme qu’il faut prévoir une bonne heure pour la compilation de wxPython.
J’ai publié des correctifs et ait ouvert un ticket pour remonter un problème.

1 Like

Merci @moul ! Tu es le premier !

Oui la compilation de wxPython est trèèèèès longue, mais heureusement ne concerne que les contributeurs, pas les utilisateurs qui auront un package autonome réalisé par pyinstaller.

J’ai ouvert au public le dépôt. Les écritures sont réservées aux contributeurs enregistrés dans GitLab.

Je regarde la première demande asap ! :+1:

3 Likes

En fait si ! J’ai ajouté les instructions dans le README.md

https://wiki.wxpython.org/How%20to%20install%20wxPython#Installing_wxPython-Phoenix_using_pip

Comme toi, j’ai aussi eu un problème avec pip :

Exception:
Traceback (most recent call last):
  File "/tmp/tikka_tests/.venv/lib/python3.6/site-packages/pip/_internal/cli/base_command.py", line 143, in main
    status = self.run(options, args)
  File "/tmp/tikka_tests/.venv/lib/python3.6/site-packages/pip/_internal/commands/install.py", line 259, in run
    with self._build_session(options) as session:
  File "/tmp/tikka_tests/.venv/lib/python3.6/site-packages/pip/_internal/cli/base_command.py", line 76, in _build_session
    if options.cache_dir else None
  File "/home/vit/.pyenv/versions/3.6.8/lib/python3.6/posixpath.py", line 80, in join
    a = os.fspath(a)
TypeError: expected str, bytes or os.PathLike object, not int
Traceback (most recent call last):
  File "/tmp/tikka_tests/.venv/bin/pip", line 11, in <module>
    sys.exit(main())
  File "/tmp/tikka_tests/.venv/lib/python3.6/site-packages/pip/_internal/__init__.py", line 78, in main
    return command.main(cmd_args)
  File "/tmp/tikka_tests/.venv/lib/python3.6/site-packages/pip/_internal/cli/base_command.py", line 184, in main
    timeout=min(5, options.timeout)
  File "/tmp/tikka_tests/.venv/lib/python3.6/site-packages/pip/_internal/cli/base_command.py", line 76, in _build_session
    if options.cache_dir else None
  File "/home/vit/.pyenv/versions/3.6.8/lib/python3.6/posixpath.py", line 80, in join
    a = os.fspath(a)
TypeError: expected str, bytes or os.PathLike object, not int

Je l’ai corrigé en excluant l’utilisation du cache et en mettant pip à jour:

pip install --upgrade --no-cache-dir pip

J’ai également corrigé d’autres bugs, comme les dataclasses introuvables et les fichiers locales .mo introuvable dans la wheel (poetry build).

1 Like

J’ai toujours une erreur :

$ make pyinstaller
pyinstaller dist/tikka.spec
432 INFO: PyInstaller: 4.2
432 INFO: Python: 3.9.6
433 INFO: Platform: Linux-5.10.52-1-lts-x86_64-with-glibc2.33
482 INFO: UPX is available.
Traceback (most recent call last):
  File "/usr/bin/pyinstaller", line 8, in <module>
    sys.exit(run())
  File "/usr/lib/python3.9/site-packages/PyInstaller/__main__.py", line 114, in run
    run_build(pyi_config, spec_file, **vars(args))
  File "/usr/lib/python3.9/site-packages/PyInstaller/__main__.py", line 65, in run_build
    PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
  File "/usr/lib/python3.9/site-packages/PyInstaller/building/build_main.py", line 725, in main
    build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
  File "/usr/lib/python3.9/site-packages/PyInstaller/building/build_main.py", line 672, in build
    exec(code, spec_namespace)
  File "dist/tikka.spec", line 26, in <module>
    a = Analysis(['../tikka/__main__.py'],
TypeError: __init__() got an unexpected keyword argument 'hooksconfig'
make: *** [Makefile:53 : pyinstaller] Erreur 1

Et pour pip :

$ pip install --upgrade --no-cache-dir pip
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: pip in /usr/lib/python3.9/site-packages (20.3.4)
Collecting pip
  Downloading pip-21.2.3-py3-none-any.whl (1.6 MB)
     |████████████████████████████████| 1.6 MB 478 kB/s 
WARNING: Discarding https://files.pythonhosted.org/packages/ca/bf/4133a0e05eac641ec270bbcef30512b5ad307d7838adb994acd652cc30e3/pip-21.2.3-py3-none-any.whl#sha256=895df6014c2f02f9d278a8ad6e31cdfd312952b4a93c3068d0556964f4490057 (from https://pypi.org/simple/pip/) (requires-python:>=3.6). Requested pip from https://files.pythonhosted.org/packages/ca/bf/4133a0e05eac641ec270bbcef30512b5ad307d7838adb994acd652cc30e3/pip-21.2.3-py3-none-any.whl#sha256=895df6014c2f02f9d278a8ad6e31cdfd312952b4a93c3068d0556964f4490057 has different version in metadata: '21.2.3'

puis il télécharge toutes les versions de pip dans l’ordre décroissant, avec la même erreur à chaque fois. J’avais déjà eu ce problème avec duniterpy, et il y a une issue toujours pas résolue depuis des années sur le git de pip.

Une nouvelle release de Tikka 0.2.0 est disponible pour Noël !

Une réorganisation importante du code pour améliorer l’architecture hexagonale, dont :

  • Inversion de dépendance.
  • La partie wxPython est dans un package slots.

Mais il y a aussi une amélioration de l’ergonomie :

  • Tout sera affiché dans des onglets, pour l’instant les comptes.
  • On est pas limité à un seul onglet du compte actif.
  • On peut fermer l’onglet actif avec le bouton close.
  • On peut déplacer l’onglet actif parmi les autres.
  • Sauvegarde des onglets et de celui qui est sélectionné à la fermeture de l’application.

La base de données a changée. La migration est automatique (normalement…).

Reportez vous à la procédure d’installation de votre plateforme pour avoir la commande de mise à jour.

Enjoy !

2 Likes