dsmr-reader icon indicating copy to clipboard operation
dsmr-reader copied to clipboard

Support Python 3.13 (psycopg2 package)

Open xirixiz opened this issue 1 year ago • 7 comments

Support for python 3.13

Package psycopg2

https://github.com/psycopg/psycopg2/blob/master/NEWS

[!IMPORTANT] Always create your pull request from the DSMR-reader development-branch and not the main v*-branch(es).

xirixiz avatar Dec 30 '24 10:12 xirixiz

Codecov Report

:white_check_mark: All modified and coverable lines are covered by tests. :white_check_mark: Project coverage is 99.61%. Comparing base (9ee2d88) to head (20cf625). :warning: Report is 249 commits behind head on development.

Additional details and impacted files
@@             Coverage Diff              @@
##           development    #2044   +/-   ##
============================================
  Coverage        99.60%   99.61%           
============================================
  Files              129      129           
  Lines             4597     4618   +21     
  Branches           443      455   +12     
============================================
+ Hits              4579     4600   +21     
  Misses              17       17           
  Partials             1        1           
:rocket: New features to boost your workflow:
  • :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • :package: JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

codecov[bot] avatar Dec 30 '24 10:12 codecov[bot]

Ik weet niet of dit met de huidige versie van Django (3.2) in DSMR-reader werkt. Officieel ondersteunen ze maar tot Python 3.10: https://docs.djangoproject.com/en/5.1/releases/3.2/#python-compatibility

Je kunt je PR nog uitbreiden door hier Python 3.13 van te maken en te kijken of dat werkt: https://github.com/dsmrreader/dsmr-reader/blob/development/.github/workflows/automated-tests.yml#L21

En aan dit lijstje nog 3.12 toe te voegen: https://github.com/dsmrreader/dsmr-reader/blob/development/.github/workflows/automated-tests.yml#L125

dennissiemensma avatar Dec 30 '24 18:12 dennissiemensma

Van de zomer ben ik al bezig geweest om dit permanent op te lossen, door je Docker-setup voor DSMR-reader 6+ als enige installatie nog te ondersteunen. Waardoor ik nog maar 1 versie hoef te ondersteunen zonder gedoe.

  • Nieuwe layout: https://github.com/dsmrreader/dsmr-reader/tree/work-in-progress/v6
  • Nieuwe versies: https://github.com/dsmrreader/dsmr-reader/blob/work-in-progress/v6/src/pyproject.toml#L16 (hier nog Python 3.12)

dennissiemensma avatar Dec 30 '24 18:12 dennissiemensma

Helaas heb ik eind van de zomer ernstig enkeleletsel gekregen na een ongeluk, dus mijn plannen voor ontwikkelen voor de winter liggen nog even stil (welliswaar weinig pijn bij achter computer zitten, maar lang zitten zorgt niet voor herstel)

Ik ben wel een heel eind met de bovenstaande setup. Ik was bezig om alle docs te versimpelen (weggooien wat niet meer relevant is voor Docker) en daarna nog een upgrade guide te maken. Dus daar hangt het momenteel op.

Wellicht dat ik er binnenkort weer meer tijd voor heb, gezien ik (tijdelijk) overweeg een dagje minder te gaan werken. Al moet dat het herstel niet in de weg zitten.

dennissiemensma avatar Dec 30 '24 18:12 dennissiemensma

Voor DSMR-reader 6 lijkt 3.13 al wel te werken. Ik zal 3.12 voor de zekerheid ook nog laten testen in de CI, maar over een paar maanden zal 3.13 de mainstream versie worden.

https://github.com/dsmrreader/dsmr-reader/actions/runs/12656617088

dennissiemensma avatar Jan 07 '25 17:01 dennissiemensma

@xirixiz ik ben ook al bezig met voorbereidingen te doen om DSNR-reader v6 werkend te krijgen in je project. Wellicht is het handiger dat we daar alles in meenemen. Die zit ook al op Python 3.13.

  • https://github.com/xirixiz/dsmr-reader-docker/compare/main...dennissiemensma:dsmr-reader-docker:feature/dsmr-reader-v6

Overigens zit het meeste werk in het overzetten en strippen van de DSMR-reader docs in DSMR-reader zelf, maar dat wordt wel wat makkelijker zodra de development-build van DSMR-reader 6 (vanuit develop) werkt.

dennissiemensma avatar Jan 13 '25 19:01 dennissiemensma

Hehehe, ik kreeg geen notificaties van Github, alleen nadat je mij explicitet getagd hebt. Ik loop de comments nog even door :smile:

xirixiz avatar Jan 14 '25 11:01 xirixiz

@xirixiz het duurde even, maar ik heb nu een begin werkend via:

  • Draft: https://github.com/dennissiemensma/dsmr-reader-docker/pull/1/files
  • Diff: https://github.com/xirixiz/dsmr-reader-docker/compare/main...dennissiemensma:dsmr-reader-docker:feature/dsmr-reader-v6

Deze kan dan naast normale release ook de development branch van DSMR-reader gebruiken, waar momenteel grotendeels al de "nieuwe" opzet in staat:

  • https://github.com/dsmrreader/dsmr-reader/tree/development

Daarmee zijn dan development builds te maken van DSMR-reader, zonder dat er een DSMR-reader release gedaan hoeft te worden. Dat is vooral tot aan DSMR-reader v6.0.0 wel fijn, omdat het anders een big bang is.


Wat is handig? Het is niet backwards-compatible met v5.x, door de rework van de mappen in DSMR-reader v6.x. Dus het is sws nog niet naar jouw main te mergen, totdat DSMR-reader v6 helemaal lekker werkt en vooral in combinatie met jouw setup (ik kan je pipeline niet zo 1-2-3 testen).

Is het een optie om het uiteindelijk eerst naar jouw develop te zetten? Of een andere branch.

  • https://github.com/xirixiz/dsmr-reader-docker/compare/develop...dennissiemensma:dsmr-reader-docker:feature/dsmr-reader-v6

Dan zit het je ook niet in de weg voor eventuele wijzigingen aan main.

Laat maar weten!

dennissiemensma avatar Aug 04 '25 21:08 dennissiemensma

Met bijgevoegde base.txt en patches LIJKT dsmrreader v5.11 hier te werken op Debian 13.1 Trixie met Python3.13. Verdere installatie en config is zoals in de installatie instructies.

Disclaimer: Ik heb nog bijlange niet genoeg kunnen testen om hier finaal voor af te tekenen maar so far so good. Als iemand dit kan/wil testen?

base.txt sudo -u dsmr sed -i'.bak' 's/ugettext_lazy/gettext_lazy/g' /home/dsmr/dsmr-reader/dsmr_frontend/migrations/0034_mysql_timezone_support.py sudo -u dsmr sed -i'.bak' 's/ugettext_lazy/gettext_lazy/g' /home/dsmr/dsmr-reader/dsmr_frontend/migrations/0032_v3_4_0_release.py sudo -u dsmr sed -i'.bak' 's/ugettext_lazy/gettext_lazy/g' /home/dsmr/dsmr-reader/dsmr_frontend/migrations/0026_v2140_release.py

bartchampagne avatar Sep 18 '25 20:09 bartchampagne

@bartchampagne Ik kan het wel meenemen in een nieuwe DSMR Reader Docker release. De patch kan ik uiteraard eenvoudig meenemen in het build proces. Ik zal het morgen even testen op de develop branch.

xirixiz avatar Sep 19 '25 04:09 xirixiz

@xirixiz @bartchampagne zie mijn comment hierboven van 4 augustus. Wellicht is het handiger om die te proberen dan om het te patchen. Ik ben echter nog tot eind september op vakantie en dus kan tussendoor geen wijzigingen doen.

dennissiemensma avatar Sep 19 '25 06:09 dennissiemensma

@dennissiemensma ik zag het zojuist inderdaad. Ik heb een tijd lang issues gehad met Github en wat communicatie daarover gehad met Microsoft. Inmiddels werkt het allemaal weer en ontvang ik ook weer notificaties 🥳. Ik duik er dit weekend even in.

Ik ben het ermee eens dat het beter is dan te patchen idd. Ik maak een PR aan naar develop branch en ga een eerste build starten.

Maak er nog een mooie vakantie van 🌞!

Ik krijg een build fout op poetry (pillow), de versie (>=9.0.0) is niet compatible met pyhton 3.13. Poetry pakt de hoogste versie in de 9.x.x release, en niet de nieuwste (groter dan release 10 of 11).

https://github.com/xirixiz/dsmr-reader-docker/actions/runs/17850510025/job/50758001356#step:11:2770

xirixiz avatar Sep 19 '25 06:09 xirixiz

Dank voor jullie reacties heren! Mijn patch is het resultaat van OS upgrades naar Debian Trixie van m'n non-Docker'ed dsmrreader instances. Deze wou ik delen zodat anderen (die naar Python3.13 upgraden) er baat bij hebben zonder al het werk opnieuw te moeten doen. Zelf zie ik dit als een 'quick fix/update' zodat ik met m'n OS upgrades verder kan in afwachting van dsmrreader v6.

TL;DR: Momenteel heb ik 2 locaties met een meter die ik uitlees met een lokale VM (omdat de VM infra er toch al is). In de komende weken worden dat 4 meters die ik ga uitlezen vanaf een centrale locatie (via serial over ethernet). To be defined of dat aparte VMs worden of dat ik voor de docker versie ga (heb nog geen ervaring met Docker) maar waarschijnlijk ga ik wel een aparte gemeenschappelijke database server gebruiken. v6 gaat tegen dan waarschijnlijk nog niet klaar zijn maar op deze manier hoef ik geen oude OS/Python versies meer te deployen.

bartchampagne avatar Sep 19 '25 12:09 bartchampagne

@bartchampagne Docker heeft wel een wat steile leercurve, maar dat is vooral bij het opzetten en bouwen van containers.

Het gebruikmaken van containers (van anderen, zoals hier) is wat simpeler. Al zul je goed moeten opletten dat je de persistente data schrijft naar je host en niet de container, zodat die een reset overleeft. Echter is ook dat vooral aan degenen die het bouwen en aanbieden om dat duidelijk te vermelden. Of als alternatief om bijvoorbeeld de database niet in containers te draaien, maar zoals je nu ook al doet. Gezien een DB upgrade doorgaans het minste werk is tov Python-upgrades.

In dit geval heeft Xirixiz overigens de aflopen jaren al een behoorlijke bulk aan documentatie in zijn project zitten met een hoop ins en outs over opties van de container-versie van DSMR-reader.

In dat laatste deels zit dan ook nog aardig wat werk aan mijn zijde om daar een handleiding voor te maken voor iedereen (inclusief mijzelf) die wisselt van een native installatie naar containers.

dennissiemensma avatar Oct 04 '25 18:10 dennissiemensma

@xirixiz dank voor proberen! Ik zal er naar kijken:

Ik krijg een build fout op poetry (pillow), de versie (>=9.0.0) is niet compatible met pyhton 3.13. Poetry pakt de hoogste versie in de 9.x.x release, en niet de nieuwste (groter dan release 10 of 11).

https://github.com/xirixiz/dsmr-reader-docker/actions/runs/17850510025/job/50758001356#step:11:2770

dennissiemensma avatar Oct 04 '25 18:10 dennissiemensma

Pillow wordt niet direct door DSMR-reader gebruikt, maar ik zie dat een admin-plugin voor een colorpicker hem gebruikt. Die plugin was nog een oude versie en is nu bijgewerkt. Ik zie dat die dan ook een nieuwere Pillow gebruikt.

  • https://github.com/dsmrreader/dsmr-reader/actions/runs/18248602411/job/51959953928#step:3:346

@xirixiz wellicht kun je nog een nieuwe build proberen vanaf develop, kijken of die nu verder komt

dennissiemensma avatar Oct 04 '25 19:10 dennissiemensma

Witte rook (wat bouwproces iig :))! https://github.com/xirixiz/dsmr-reader-docker/actions/runs/18256694818/job/51979019446

@bartchampagne zin om de development image te testen (gebasseerd op de development branch van DSMR.

Docker image tag: dsmr-reader-docker:development

xirixiz avatar Oct 05 '25 10:10 xirixiz

@xirixiz ah top! Dan is de update voor jouw project in ieder geval al goed en is het nog een kwestie van de DSMR-reader upgrade zelf afmaken.

Er zijn nog wat plugins die ook nog een update moeten krijgen en tot die tijd is het nog niet 'stable'. En wellicht kunnen we daarna eerst testen met iemand die al containers gebruikt (ik moet zelf ook nog over).

dennissiemensma avatar Oct 05 '25 11:10 dennissiemensma

Bij deze lijkt de Python 3.13 support al goed en is de bump naar de volgende Python-versie ook wat minder moeilijk. Helemaal nu ik niet meer handmatig al die requirements hoef bij te werken en straks gewoon Poetry een hoop kan laten uitzoeken

dennissiemensma avatar Oct 05 '25 11:10 dennissiemensma

Super! Ik draaide per ongeluk op de development tag en dat werkte naar behoren. Ik zie wel dat de size van de image erg groot is, maar daar duik ik de komende dagen nog wel even in (vast een kleinigheidje).

development = development branch dsmr reader latest = 5.11.x

image

xirixiz avatar Oct 05 '25 12:10 xirixiz

Had met poetry en venv te maken, verreist wat meer cleanup.

image

Nog wat kleine fixes en dan is het een werkende image iig.

xirixiz avatar Oct 05 '25 17:10 xirixiz

Het bouwen duurde een dik uur tov een minder dan een half uur.

Daarom het volgende nog gedaan:

  • Ik heb "venv" verwijderd (geen voordeel in Docker).
  • ARMv6 (achterhaalde architectuur) vewijderd.
  • Verbeteringen aangebracht tav pip en poetry in het build proces (build caching en voorkeur voor wheels).
  • Bij Docker build in de GitHub pipeline / workflow gebruik gaan maken van GiHub Actions caching.

Improvement van 10 minuten maar helaas, maar wel een image met minder "vervuiling" (oorzaak heeft te maken met Python 3.13). Maar hoe dan ook klaar voor de volgende release 😓😄☮️.

xirixiz avatar Oct 06 '25 16:10 xirixiz

Top! Zijn er nog andere manieren om het sneller te krijgen? Of ligt het voor een deel ook aan de hardware van de gratis tier van Github Actions?

dennissiemensma avatar Oct 06 '25 16:10 dennissiemensma

Witte rook (wat bouwproces iig :))! https://github.com/xirixiz/dsmr-reader-docker/actions/runs/18256694818/job/51979019446

@bartchampagne zin om de development image te testen (gebasseerd op de development branch van DSMR.

Docker image tag: dsmr-reader-docker:development

An sich wil ik zeker het een en ander testen. Wel ga ik gelijk moeten toegeven dat ik nog welgeteld nul ervaring heb met Docker en vrije tijd tegenwoordig bijzonder schaars is.

TL;DR: Fluvius (BE) heeft de installatie/configuratie van m'n 2 nieuwe digitale meters verkloot: ze geraken niet online, sturen geen meetgegevens door en ik kan de P1 poort niet aanzetten. Op 't werk nog een belangrijke hotfix deployen en hopelijk keert dan de normale project drukte weer terug.

bartchampagne avatar Oct 09 '25 21:10 bartchampagne