Closed Guts closed 3 years ago
Je teste un peu, essaie de comprendre !
Une erreur lié à notre architecture peut être : l'appel à Path.resolve() provoque une erreur lorsque le répertoire est un répertoire réseau, sur lequel on peut écrire pourtant.
>>> dir = Path('f:/')
>>> dir.resolve()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "W:\OSGeo4W64\apps\Python37\lib\pathlib.py", line 1123, in resolve
s = self._flavour.resolve(self, strict=strict)
File "W:\OSGeo4W64\apps\Python37\lib\pathlib.py", line 189, in resolve
s = self._ext_to_normal(_getfinalpathname(s))
PermissionError: [WinError 5] Accès refusé: 'f:\\'
Puis une autre sur le décorateur lru_cache ?? (Python 3.7) en précisant un maxsize, ça passe.
File "\\NAS01\appdata2008\culos\AppData\Roaming\.qgisltr\profiles\xcu/python/plugins\menu_from_project\logic\qgs_manager.py", line 148, in
def read_from_http(uri: str, cache_folder: Path):
File "W:\OSGEO4~1\apps\Python37\lib\functools.py", line 474, in lru_cache
raise TypeError('Expected maxsize to be an integer or None')
TypeError: Expected maxsize to be an integer or None
A la création du cache (QGIS n'existait pas encore chez moi..)
File "\\NAS01\appdata2008\culos\AppData\Roaming\.qgisltr\profiles\xcu/python/plugins\menu_from_project\menu_from_project.py", line 60, in
cache_folder.mkdir(exist_ok=True)
File "W:\OSGEO4~1\apps\Python37\lib\pathlib.py", line 1230, in mkdir
self._accessor.mkdir(self, mode)
FileNotFoundError: [WinError 3] Le chemin d’accès spécifié est introuvable: 'C:\\Users\\culos\\.cache\\QGIS\\Layersmenufromproject'
je poursuis !
Passés ces petits soucis, ça fonctionne ! C'est magique.
Super taf @Guts ! Merci Xavier pour la revue (et bonne annnée)
* Idéalement il vaudrait mieux utiliser le chemin du cache de QGIS je pense mais je n'ai pas trouvé de variable qui l'indique.
A tout hasard, ce serait pas le cache QtNetwork tout simplement ?
https://doc.qt.io/qt-5/qnetworkdiskcache.html
Je vais tester ça dans ma nouvelle structure aussi, dès que j'aurais un setup qui marche..
Merci @haubourg mais ça n'est pas encore terminé, cf mes remarques en description. Je vais essayer de m'en occuper demain soir, histoire d'enfin offrir mes étrennes à Florian B. et son équipe 😉 !
A tout hasard, ce serait pas le cache QtNetwork tout simplement ? https://doc.qt.io/qt-5/qnetworkdiskcache.html
Peut-être mais Je ne suis pas sûr. Aujourd'hui, je suis sous Windows et je retrouve pas mes petits, mais de mémoire, le chemin est quelque chose comme ~/.cache/QGIS/QGIS3
.
Hello,
J'avais utilisé un temps QgsProcessingUtils.tempFolder()
, pour un usage un peu différent.
Sinon, est-ce qu'il ne faudrait pas rendre unique le nom du fichier dans le cache ? Les risques sont faibles que deux fichiers portent le même nom, mais ?
J'avais utilisé un temps QgsProcessingUtils.tempFolder(), pour un usage un peu différent.
Merci pour la piste. Par contre, il s'agit d'un pointeur de dossier temporaire et non de cache, non ? (j'ai pas regardé, c'est juste d'après le nom)
Sinon, est-ce qu'il ne faudrait pas rendre unique le nom du fichier dans le cache ? Les risques sont faibles que deux fichiers portent le même nom, mais ?
Oui, c'est prévu via un hash de l'url, un peu à la manière de que fait scrapy pour les images.
C'est du temporaire oui, dédié aux scripts 'processing'. sous windows : C:/Users/xxx/AppData/Local/Temp/processing_...
C'est du temporaire oui, dédié aux scripts 'processing'. sous windows :
C:/Users/xxx/AppData/Local/Temp/processing_...
Ok donc c'est pas ce qu'on cherche exactement.
HS : j'ai glissé une capture du plugin dans ma blog-notes https://static.geotribu.fr/articles/2021/2021-01-19_pyqgis_utiliser_icones_integrees/ #inception ;)
La version expérimentale est publiée, en attente de validation. Mais ne ne connais pas trop de testeurs !
ici un projet exemple : http://adour-garonne.eaufrance.fr/upload/DATA/SIG/aeag-web.qgz
Close #28 partiellement.
Pardon, j'ai fini tard hier soir donc j'avais plus la force pour une explication. Comme j'aime bien ce plugin, je m'en sers pour remonter en puissance sur le développement de plugins sur mon temps perso.
Principaux changements
côté ui :
côté logique du plugin :
{user_home}/.cache/QGIS/{plugin_name_slugified
. Idéalement il vaudrait mieux utiliser le chemin du cache de QGIS je pense mais je n'ai pas trouvé de variable qui l'indique.Refacto
Divers
Ce qui manque avant une prochaine release
Bonux stage
ping @xcaeag