<!DOCTYPE html>
<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Hi devs,</p>
    <p>I was wondering, is there a rule for which python version comes
      with each QGIS version?</p>
    <p>It would be very useful for developing plugins, because I thought
      that from QGIS 3.34 onwards it comes with Python 3.12. But I
      installed qgis-ltr (3.40.5) on debian and saw that it came with
      Python 3.11.</p>
    <p>Is there a minimum Python version that all plugins should use?
      We've been using new syntax added on newer versions of Python
      thinking that if the latest QGIS release comes with a certain
      Python version, I could assume that my plugin (if I only want to
      support the last two LTR) must work with that python version.</p>
    <p>To summarize:<br>
      - In my Windows machine, I have both QGIS 3.40.4 & 3.34.15 and
      they both come with Python 3.12, therefore I assumed our plugin
      could use Python 3.12 syntax and features.<br>
      - In a Debian machine, I installed QGIS 3.40.5 and it came with
      Python 3.11.2.</p>
    <p>It's not the end of the world for our plugin, because the most
      significant change we made was the usage of `match`, which was
      introduced in Python 3.10. But still, I don't really know if some
      user might have the latest release still with Python 3.9.</p>
    <p>That's why I'm asking, what guidelines should I follow?</p>
    <p> Thank you very much!</p>
    <p>--</p>
    <p>Maspi<br>
    </p>
    <div class="moz-signature">
      <div class="moz-signature">
        <meta name="ProgId" content="Word.Document">
        <meta name="Generator" content="Microsoft Word 15">
        <meta name="Originator" content="Microsoft Word 15">
        <style>@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;
        mso-font-charset:0;
        mso-generic-font-family:roman;
        mso-font-pitch:variable;
        mso-font-signature:-536869121 1107305727 33554432 0 415 0;}@font-face
        {font-family:Aptos;
        mso-font-charset:0;
        mso-generic-font-family:swiss;
        mso-font-pitch:variable;
        mso-font-signature:536871559 3 0 0 415 0;}p.MsoNormal, li.MsoNormal, div.MsoNormal
        {mso-style-unhide:no;
        mso-style-qformat:yes;
        mso-style-parent:"";
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:8.0pt;
        margin-left:0cm;
        line-height:107%;
        mso-pagination:widow-orphan;
        font-size:11.0pt;
        font-family:"Aptos",sans-serif;
        mso-ascii-font-family:Aptos;
        mso-ascii-theme-font:minor-latin;
        mso-fareast-font-family:Aptos;
        mso-fareast-theme-font:minor-latin;
        mso-hansi-font-family:Aptos;
        mso-hansi-theme-font:minor-latin;
        mso-bidi-font-family:"Times New Roman";
        mso-bidi-theme-font:minor-bidi;
        mso-font-kerning:1.0pt;
        mso-ligatures:standardcontextual;
        mso-fareast-language:EN-US;}a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#467886;
        mso-themecolor:hyperlink;
        text-decoration:underline;
        text-underline:single;}a:visited, span.MsoHyperlinkFollowed
        {mso-style-noshow:yes;
        mso-style-priority:99;
        color:#96607D;
        mso-themecolor:followedhyperlink;
        text-decoration:underline;
        text-underline:single;}.MsoChpDefault
        {mso-style-type:export-only;
        mso-default-props:yes;
        font-size:11.0pt;
        mso-ansi-font-size:11.0pt;
        mso-bidi-font-size:11.0pt;
        mso-ascii-font-family:Aptos;
        mso-ascii-theme-font:minor-latin;
        mso-fareast-font-family:Aptos;
        mso-fareast-theme-font:minor-latin;
        mso-hansi-font-family:Aptos;
        mso-hansi-theme-font:minor-latin;
        mso-bidi-font-family:"Times New Roman";
        mso-bidi-theme-font:minor-bidi;
        mso-fareast-language:EN-US;}.MsoPapDefault
        {mso-style-type:export-only;
        margin-bottom:8.0pt;
        line-height:107%;}div.WordSection1
        {page:WordSection1;}</style></div>
    </div>
  </body>
</html>