{{{#!div style="float: right; margin: 0 1em" ← [../1.1.3] | [../1.1.5] → }}} = Documenting API changes since 1.1.3 {{{#!box info The next stable version of Trac will be named 1.2 and will contain the cumulative changes made in the successive 1.1.x releases. These notes reflect the current status for [milestone:1.1.4], in [source:trunk]. Proposed changes are prefixed with an OPEN mark and the //paragraph is written in italics.// }}} [[PageOutline(2-4,Summary,inline)]] == Prerequisites **Only Python versions 2.6 and 2.7 are supported.** The following language feature introduced in Python 2.6 can now be used and the related clean-ups can be done: - use string [http://docs.python.org/library/string.html#string-formatting format()], `print()` - `except Cls as val` - class decorators to avoid the `implements` hack? - `@prop.setter` / `@prop.deleter` - `namedtuple`s! - there's no longer need of `from __future__ import with_statement` - `next(iterator, [default])` to clean-up some unit tests - timeout in smtplib === Modified Dependencies See gmessage:trac-dev:nkMUY_8ILF0/rg1rsArDIewJ for a discussion about what dependencies we'll support in Trac 1.2. ==== jQuery and jQuery UI (bundled) The bundled version of [http://jquery.com jQuery] will be **1.9 / 2.0** instead of 1.8.3 in Trac 1.1.1. See jQuery release notes for the corresponding major updates: - http://blog.jquery.com/2013/01/15/jquery-1-9-final-jquery-2-0-beta-migrate-final-released/ OPEN // The bundled version of the full minified [http://jqueryui.com jQuery UI] package will be at least [http://jqueryui.com/docs/Changelog/1.11.2 1.11.2]. See #11019. // ==== Babel (optional) The internationalization support (i18) for Trac is depending on [http://babel.edgewall.org/ Babel], version 1.0. (#10882) TODO //Babel >= 0.9.5 is still supported.// ==== Genshi (mandatory) OPEN // '''Genshi 0.7''' // //Genshi 0.6.x is still supported.// ==== Databases |||| **Database** || || SQLite || ? || || PostgreSQL || ? || || MySQL / MariaDB || ? || |||| **Database Bindings** || || pysqlite || 2.4.1 (version provided by Python 2.6) || || psycopg2 || ? || || MySQLdb || ? || ==== 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, however let's consider dropping support for 1.6 || || !ConfigObj || Optional || Unspecified. Let's consider enforcing a minimum version, such as >= 5.0. !ConfigObj 5.0 released on [pypi:configobj/5.0.0 2014-02-15] || || !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 [https://pypi.python.org/pypi/Pygments/1.0 2008] || ... please add any dependencies I've overlooked. === Deprecated Modules Removed TODO Remove support for `mod_python` (see TracModPython) ... or maybe not. It seems the project is alive (comment:34:ticket:11605). DONE: Removed Enscript, SilverCity and PHP renderers. === New Dependencies === None! == Detailed List of Developer Visible Changes #list [[TicketQuery(milestone=1.1.3,status=closed,apichanges!=,col=summary,rows=apichanges,group=component,format=table)]] == Other Modifications made to the 1.0 API Take the //will be removed in version 1.1.1// comments in the code seriously. The earlier the planned API changes in 1.1.x, the better (gives more time to plugin authors to adapt). TODO === Modified Interfaces ==== `IWikiChangeListener` ^[source:trunk/trac/wiki/api.py@13198:53#L32 (1.1.3)] [source:branches/1.0-stable/trac/wiki/api.py@11490#L33 (1.0)]^ ==== #IWikiChangeListener Wiki page version comments can now be edited, so `wiki_page_comment_modified(page, old_comment)` has been added to allow plugins to be notified of this. ==== `IPreferencePanelProvider` ^[source:trunk/trac/prefs/api.py@13510:23#L17 (1.1.3)] [source:branches/1.0-stable/trac/prefs/api.py@11490#L17 (1.0)]^ ==== #IPreferencePanelProvider [wiki:TracDev/PluginDevelopment/ExtensionPoints/trac.prefs.api.IPreferencePanelProvider IPreferencePanelProvider] implementations can now provide child panels that appear as sections appended to other panels ([wiki:TracDev/Proposals/AdvancedNotification#Modularpreferencepages proposal]). This allows plugins to extend existing preference panels. === New Interfaces === ==== `trac.notification.api.INotificationDistributor` ^[source:trunk/trac/notification/api.py@13454#L29 (1.1.3)]^ ==== #INotificationDistributor A new [wiki:TracDev/PluginDevelopment/ExtensionPoints/trac.notification.api.INotificationDistributor INotificationDistributor] interface was added ([wiki:TracDev/Proposals/AdvancedNotification#ExtensionAPIformaildistribution proposal]). It allows plugins to distribute notifications on different channels (e.g. over XMPP). ==== `trac.notification.api.INotificationFormatter` ^[source:trunk/trac/notification/api.py@13454#L46 (1.1.3)]^ ==== #INotificationFormatter A new [wiki:TracDev/PluginDevelopment/ExtensionPoints/trac.notification.api.INotificationFormatter INotificationFormatter] interface was added ([wiki:TracDev/Proposals/AdvancedNotification#ExtensionAPIformaildistribution proposal]). It allows plugins to format notifications (e.g. to HTML). ==== `trac.notification.api.INotificationSubscriber` ^[source:trunk/trac/notification/api.py@13469#L70 (1.1.3)]^ ==== #INotificationSubscriber A new [wiki:TracDev/PluginDevelopment/ExtensionPoints/trac.notification.api.INotificationSubscriber INotificationSubscriber] interface was added ([wiki:TracDev/Proposals/AdvancedNotification#ExtensionAPIforsubscriptions proposal]). It allows plugins to provide more subscription preferences (e.g. to send or suppress notifications under special conditions). ==== `trac.notification.api.IEmailAddressResolver` ^[source:trunk/trac/notification/api.py@13454#L67 (1.1.3)]^ ==== #IEmailAddressResolver A new [wiki:TracDev/PluginDevelopment/ExtensionPoints/trac.notification.api.IEmailAddressResolver IEmailAddressResolver] interface was added ([wiki:TracDev/Proposals/AdvancedNotification#ExtensionAPIformaildistribution proposal]). It allows plugins to retrieve email addresses from users (e.g. from LDAP). ==== `trac.notification.api.IEmailDecorator` ^[source:trunk/trac/notification/api.py@13454#L79 (1.1.3)]^ ==== #IEmailDecorator A new [wiki:TracDev/PluginDevelopment/ExtensionPoints/trac.notification.api.IEmailDecorator IEmailDecorator] interface was added ([wiki:TracDev/Proposals/AdvancedNotification#ExtensionAPIformaildistribution proposal]). It allows plugins to add or tweak email headers. === Notification API Changes === To take advantage of the new notification related interfaces, code that sends notifications must use the new [wiki:TracDev/NotificationApi Notification API] instead of the `NotifyEmail` class hierarchy. (See [wiki:TracDev/Proposals/AdvancedNotification#ExtensionAPIformaildistribution proposal]) === Uncategorized Changes DONE: Remove deprecated compatibility code for InterTrac links: [browser:/trunk/trac/wiki/formatter.py@13050:703-712#L696], and remove documentation: * InterWiki page * [browser:/trunk/trac/wiki/intertrac.py@13050:50-60#L30] DONE: Removed the deprecated `authname` parameter from `Environment.get_repository()`. TODO: Log warnings for deprecated functions and methods (comment:26:ticket:11605) === Database API Changes Methods have been added to `DatabaseManager` class for settings and retrieving the database version for Trac and plugins: `set_database_version` and `get_database_version` (#11859). == New in the 1.1.4 API Be sure to have a look at the new ApiDocs ([http://www.edgewall.org/docs/trac-trunk/html/ for latest trunk]). TODO: Remove //Since// info from docstrings for Trac < 0.12. //This is a work in progress - coverage is still not yet complete.// {{{#!comment === New Classes ==== `trac.x.y.ClassName` ^[source:trunk/trac/x/y.py@#Lnum (1.0)]^ #ClassName ... === Other news }}}