Earlier quoted context omitted.
The TZ database has versions and you could at least in theory expose that at a higher level in libraries.
Pretty sure pytz will hand you the appropriate timezone for a given date. There aren't version numbers after all but it can do the right thing based on when you say it is. There is some weird behaviour due to this when trying to get a timezone without an associated date as it doesn't default to now. Then again you probably have all sorts of DST bugs if you have places in your code that do that.
Correct, or more precisely for a given timezone it will use the correct offset depending on the date being converted:
>>> format_datetime(datetime.datetime(2011, 12, 15, 10, 5, 18, tzinfo=berlin).astimezone(samoa), 'full')
Wednesday, 14 December 2011 at 23:12:18 Apia Daylight Time
>>> format_datetime(datetime.datetime(2012, 1, 15, 10, 5, 18, tzinfo=berlin).astimezone(samoa), 'full')
Sunday, 15 January 2012 at 23:12:18 Apia Daylight Time