Edgewall Software

Opened 12 months ago

Last modified 12 months ago

#13607 assigned defect

sqlite3.version_info is deprecated since Python 3.12 and will be removed in Python 3.14 — at Initial Version

Reported by: Jun Omae Owned by: Jun Omae
Priority: normal Milestone: 1.6.1
Component: database backend Version:
Severity: normal Keywords: sqlite
Cc: Branch:
Release Notes:
API Changes:
Internal Changes:

Description

https://docs.python.org/3.12/library/sqlite3.html#sqlite3.version_info

After the following patch, it will retrieve pysqlite3.version_info only when pysqlite3 is used.

  • trac/db/sqlite_backend.py

    diff --git a/trac/db/sqlite_backend.py b/trac/db/sqlite_backend.py
    index dc0bf4ca9..8f38af387 100644
    a b try:  
    3737    import pysqlite3.dbapi2 as sqlite
    3838except ImportError:
    3939    import sqlite3 as sqlite
     40    pysqlite3_version = None
     41else:
     42    pysqlite3_version = get_pkginfo(sqlite).get('version', '%d.%d.%s' %
     43                                                           sqlite.version_info)
    4044
    4145sqlite_version = sqlite.sqlite_version_info
    4246sqlite_version_string = sqlite.sqlite_version
    43 pysqlite_version = sqlite.version_info
    44 pysqlite_version_string = get_pkginfo(sqlite).get('version',
    45                                                   '%d.%d.%s'
    46                                                   % pysqlite_version)
    4747min_sqlite_version = (3, 0, 0)
    4848
    4949
    class SQLiteConnector(Component):  
    273273
    274274    def get_system_info(self):
    275275        yield 'SQLite', sqlite_version_string
    276         yield 'pysqlite', pysqlite_version_string
     276        if pysqlite3_version:
     277            yield 'pysqlite3', pysqlite3_version
    277278
    278279    @lazy
    279280    def _extensions(self):
  • trac/tests/env.py

    diff --git a/trac/tests/env.py b/trac/tests/env.py
    index e0f949949..80a700208 100644
    a b class SystemInfoTestCase(unittest.TestCase):  
    520520            self.assertEqual(info_before, info_after)
    521521            self.assertRegex(get_info(info_before, 'SQLite'),
    522522                             r'^\d+(\.\d+)+$')
    523             self.assertRegex(get_info(info_before, 'pysqlite'),
    524                              r'^\d+(\.\d+)+$')
    525523        else:
    526524            self.fail("Unknown value for dburi %s" % self.env.dburi)
    527525

Change History (0)

Note: See TracTickets for help on using tickets.