Edgewall Software

Version 15 (modified by Christian Boos, 8 years ago) ( diff )

Jinja2 / Genshi plan

1.2 | 1.3.2

Documenting API changes since 1.2.x

The next stable version of Trac will be named 1.4 and will contain the cumulative changes made in the successive 1.2.x releases.

These notes reflect the current status for 1.3.1, in trunk.

Proposed changes are prefixed with an OPEN mark and the paragraph is written in italics.

Summary

  1. Prerequisites
    1. Modified Dependencies
      1. jQuery and jQuery UI (bundled)
      2. Babel (optional)
      3. Jinja2 (mandatory)
      4. Genshi (optional, deprecated)
      5. Databases
      6. Other
      7. Compatible Distros
    2. Deprecated Modules Removed
    3. New Dependencies
  2. Detailed List of Developer Visible Changes
  3. Other Modifications made to the 1.2 API
    1. Uncategorized Changes
  4. New in the 1.3.1 API

Prerequisites

Only Python version 2.7 is supported.

The following language features introduced in Python 2.7 can now be used and the related clean-ups can be done:

  • OrderedDict
  • Set literals
  • Set and dictionary comprehensions

TODO List supported browsers. Consider using jQuery's list.

Modified Dependencies

See gmessage:trac-dev:nkMUY_8ILF0/rg1rsArDIewJ for a discussion about what dependencies we'll support in Trac 1.4.

jQuery and jQuery UI (bundled)

Babel (optional)

Jinja2 (mandatory)

OPEN The plan is to apply the TracDev/Proposals/Jinja early in the 1.3.x development cycle.

Genshi (optional, deprecated)

OPEN Jointly with the switch to Jinja2, Genshi support will be deprecated but kept functional for the whole 1.3.x cycle, and likely for the 1.4.x stable releases as well, in a similar spirit to what we did when we switched from ClearSilver to Genshi 10 years ago.

The goal is nevertheless to remove Genshi support during the 1.5.x development cycle, at the latest, so plugin developers will be urged to do the switch as well, as explained in PortingFromGenshiToJinja.

Databases

Database
SQLite ≥ 3.0
PostgreSQL ≥ 8.0
MySQL / MariaDB ≥ 5.0
Database Bindings
pysqlite ≥ 2.4.1 (version provided by Python 2.6), avoid 2.5.2 - 2.5.4
psycopg2 ≥ 2.0
MySQLdb ≥ 1.2.2

Other

Package Req or Opt? Version supported
SetupTools Required ≥ 0.6, 5.4 - 5.6 are not recommended.
Git Optional ≥ 1.5.6
Subversion Optional ≥ 1.6
DocUtils Optional ≥ 0.3.9
Textile Optional ≥ 2.0
Pygments Optional ≥ 0.6. Let's consider bumping the requirement to at least 1.0, released in 2008
passlib Optional Windows only

Compatible Distros

The supported dependencies were determined by aiming to be compatible with the versions provided by the package managers on the following distros.

Package Ubuntu 14.04 Debian 8 Debian 7.8 CentOS 7.1.1503 CentOS 6.6 openSUSE 13.2
Python 2.7.5 2.7.9 2.7.3 2.7.5 2.6.6
Python3 3.4.0 3.4.2 3.2.3
Babel 1.3 1.3 0.9.6 0.9.6 0.9.4
Genshi 0.7 0.7 0.6 n/a n/a
SQLite 3.8.2 3.8.7 3.7.13 3.7.17 3.6.20
PostgreSQL 9.3.6 9.4.1 9.1.15 9.2.10 8.4.20
MySQL 5.5.41, 5.6.19 5.5.42 5.5.41 n/a 5.1.73
MariaDB 5.5.41 10.0.16 n/a 5.5.41 n/a
psycopg2 2.4.5 2.5.4 2.4.5 2.5.1 2.0.14
MySQLdb 1.2.3 1.2.3 1.2.3 1.2.3 1.2.3
SetupTools 3.3.1 5.5.1 0.6.24 0.9.8 0.6.10
Git 1.9.1 2.1.4 1.7.10 1.8.3.1 1.7.1
Subversion 1.8.8 1.8.10 1.6.17 1.7.14 1.6.11
DocUtils 0.11 0.12 0.8.1 0.11 0.6
Textile 2.1.5 2.1.5 2.1.5 n/a n/a
Pygments 1.6 2.0.1 1.5 1.4 1.1.1
Apache 2.4.7 2.4.10 2.2.22 2.4.6 2.2.15
mod_wsgi 3.4 4.3.0 3.3 3.4 3.2
mod_python 3.3.1 3.3.1 3.3.1 n/a n/a
Nginx 1.4.6 1.6.2 1.2.1 n/a n/a

Deprecated Modules Removed

New Dependencies

Detailed List of Developer Visible Changes

Component: admin/console (1 match)

Ticket Summary
#12242 TracAdmin "permission add" command should be atomic
API Changes

PermissionSystem.grant_permission raises PermissionExistsError rather than IntegrityError when the user already has the action or is a member of the group.

Component: database backend (1 match)

Ticket Summary
#12496 Include PostgreSQL version in environment_info table
API Changes
  • Added get_system_info to IDatabaseConnector interface.
  • DatabaseManager implements ISystemInfoProvider to return the database version. MySQLConnector, PostgreSQLConnector and SQLiteConnector no longer implement ISystemInfoProvider.
  • Moved IEnvironmentSetupParticipant and ISystemInfoProvider from trac.env to trac.api.

Component: general (2 matches)

Ticket Summary
#11874 Allowing logger to be extended with different handlers
API Changes
  • EnvironmentStub logs to a MemoryHandler and a list of (debug_level, message) tuples can be retrieved through the log_messages property.
  • logger_handler_factory no longer returns the handler as the second return parameter. The handler can be accessed through Environment.log.handlers[0].
  • Added function trac.log.shutdown for cleaning up logger handlers.
  • Added dictionary LOG_LEVEL_MAP in trac.log module, for mapping string log levels to integer log levels.
#12558 Add contextmanager for Popen
API Changes

Added context manager for Popen to trac.util.compat. The code is copied from the Python 3.2 implementation.

Component: search system (1 match)

Ticket Summary
#11748 Disabling SearchModule does not remove search box
API Changes

PermissionSystem.get_user_permissions returns only defined permissions, unless the undefined parameter is True. The default value of undefined is False.

Component: wiki system (1 match)

Ticket Summary
#9612 `WikiPage` doesn't need the `ipnr` attribute
API Changes

Added upgrade_tables method to DatabaseManager class. Added method to Table class for removing columns: remove_columns.

Other Modifications made to the 1.2 API

Uncategorized Changes

New in the 1.3.1 API

Be sure to have a look at the new ApiDocs (for latest trunk).

This is a work in progress - coverage is still not yet complete.

Note: See TracWiki for help on using the wiki.