Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

pkgin repositories list in /opt/local/etc/pkgin/repositories.conf contains same pkgsrc URI twice #42

Closed
scarcry opened this Issue · 1 comment

2 participants

@scarcry

This occurs after creating a new joyent brand zone from both image_uuids ee1fb198-5fe1-11e2-9cce-e319fd47df7b (multiarch-12.4.1) and c91b3752-79c5-11e2-ad33-67667b9ee2c2 (trunk-0.99.0) on platform joyent_20130222T000747Z

http://pkgsrc.smartos.org/packages/SmartOS/2012Q4-multiarch/All listed twice on multiarch
http://pkgsrc.smartos.org/packages/SmartOS/trunk/All listed twice on trunk

@jperkin jperkin referenced this issue from a commit
wiz Update to 0.10.1; bump ABI depends due to new fribidi dependency.
libass (0.10.1)
 * Fix letter spacing
 * Add \rSTYLENAME syntax support (GC #43)
 * Fix border generation and border style reset (GC #56)
 * Fix various issues with bug-for-bug compatibility of
   transformations (\fax, \fay, etc.) to VSFilter (GC #46, GC #42)
 * Fix drawing parsing (GC #47)
 * Various fixes to shaper (GC #54, GC #55, GC#59)
 * Fix change detection
 * Add ass_set_line_position API to set a vertical subtitle offset
 * Fix scaling of drawing baseline offset (\pbo) values
 * Fix skipping of zero-width characters for FriBiDi shaper
 * Use LTR text base direction by default, similar to VSFilter

libass (0.10.0)
 * Bidirectional layout and Arabic shaping via FriBidi (GC #13)
 * OpenType shaping via HarfBuzz-ng (GC #13)
 * Add API for shaper configuration
 * Add support for `Language' Script Info property, this can be used for
   hinting the text language
 * Vertical layout improvements
   * Use `vert' and `vkna' OpenType features for vertical glyph variants
   * Position rotated glyphs onto baseline
 * Parse font encoding property for base text direction hinting
 * Refactor cache system
 * Use generic outlines in place of FreeType glyphs
 * Direct outline bitmap rendering
 * Fix whitespace trimming (GC #35)
 * Do not render border if there's no shadow or glyph (GC #29)
 * Adjust spacing after a italic to non-italic style change (GC #37)
 * Fix fade timing
 * Fix x positioning with borders (GC #27)
 * Build system tweaks
d07c237
@mamash mamash referenced this issue from a commit
wiz Update to 0.9.6:
-----
0.9.6
-----

* Issue #44: Test failure on Python 2.4 when MD5 hash doesn't have a `.name`
  attribute.

-----
0.9.5
-----

* Python #17980: Fix security vulnerability in SSL certificate validation.

-----
0.9.4
-----

* Issue #43: Fix issue (introduced in 0.9.1) with version resolution when
  upgrading over other releases of Setuptools.

-----
0.9.3
-----

* Issue #42: Fix new ``AttributeError`` introduced in last fix.

-----
0.9.2
-----

* Issue #42: Fix regression where blank checksums would trigger an
  ``AttributeError``.

-----
0.9.1
-----

* Distribute #386: Allow other positional and keyword arguments to os.open.
* Corrected dependency on certifi mis-referenced in 0.9.
82ae65a
@jperkin jperkin referenced this issue from a commit
taca Update ruby-net-http-persistent to 2.9.
=== 2.9 / 2013-07-24

* Minor enhancement
  * Added max_requests to avoid ECONNRESET for a server that allows a limited
    number of requests on a connection.  Pull request #42 by James Tucker.
  * Request failures are now raised with the backtrace of the original
    exception.  This gives better insight into the reason for the failure.
    See #41 by Andrew Cholakian.
  * OpenSSL is no longer required.  If OpenSSL is not available an exception
    will be raised when attempting to access HTTPS resources.  Feature request
    by André Arko

* Bug fixes
  * Explain the proper way of sending parameters depending upon the request
    method.  Issue #35 by André Arko.
  * Handle Errno::ETIMEDOUT by retrying the request.  Issue #36 by André Arko.
  * Requests retried by ruby 2.x are no longer retried by net-http-persistent.
  * Finish the connection if an otherwise unhandled exception happens during a
    request.  Bug #46 by Mark Oude Veldhuis.
  * detect_idle_timeout now assumes a StandardError indicates the idle timeout
    has been found.  Bug #43 by James Tucker.
fee061f
@jperkin jperkin referenced this issue from a commit
gls Update textproc/py-cssutils to 0.9.9.
Pkgsrc changes:
---------------

Deal with /usr/bin/env python

Upstream changes:
-----------------

0.9.9 final 120131
    - FEATURE: Implemented API for ``MarginRule`` objects inside ``CSSPageRule``, see http://www.w3.org/TR/css3-page/. You can also use e.g. ``CSSPageRule['@top-left']`` to retrieve the MarginRule it it is set etc. All dict like methods should be there. If a margin is set twice or more all properties are merged into a single margin rule. Double set properties are all kept though (see below).

    - FEATURE: ``parseStyle()`` has optional parameter ``validate=False`` now too to disable validation (default is always ``True``).

    - FEATURE: ``CSSStyleDeclaration.setProperty`` has new option ``replace=True``. if True (DEFAULT) the given property will replace a present property. If False a new property will be added always. The difference to `normalize` is that two or more properties with the same name may be set, useful for e.g. stuff like::

            background: red;
            background: rgba(255, 0, 0, 0.5);

      which defines the same property but only capable UAs use the last property value, older ones use the first value.

    + CHANGE: @rules attribute ``atkeyword`` value is now normalized. The actual keyword (example ``@IMPorT``) is kept and is optionally reserialized but in the example ``atkeyword == '@import'``

    - BUGFIX: 'auto' is now an invalid CSSPageRule pagename.
    - BUGFIX: Fixed issue for GoogleAppEngine (GAE) which somehow handles codecs differently. ``parseUrl`` should work now.

0.9.8
-----
0.9.8 final 111210
    - FEATURE: Feature Request (#4) to be able to disable validation of a stylesheet has been implemented. Add Parameter ``validate=False`` for parsing.

    + BUGFIX: Fixed #5 Unicode escaping inside strings. Thanks to Simon Sapin
    + BUGFIX: The integer is optional in counter-reset and counter-increment, and not only on the first counter. Thanks to Simon Sapin
    + BUGFIX: Fix for unicode replacements by Denis Bilenko, thanks!  https://bitbucket.org/cthedot/cssutils/pull-request/1/fix-a-bug-in-regex-which-accidentally

    - IMPROVEMENT: ``parseStyle`` moved to CSSParser, thanks to Simon Sapin

0.9.8a3 110727
    + BUGFIX: Fixed validation of ``size`` property (thanks to Simon Sapin)
	+ BUGFIX: Fixed Issue #55 (thanks to Simon Sapin): `outline-color` property was missing from validation.
    + BUGFIX: Fixed resolution of encoding detection of a stylesheet which did not use @charset in certain circumstances (mainly when imported sheets use different encoding than importing one which should be quite rare actually).

    - FEATURE: Added ``URIValue.absoluteUri`` (thanks to Simon Sapin)
    - FEATURE: Issue #53 feature request: Added new Preference option ``cssutils.ser.prefs.indentClosingBrace``. Defines if closing brace of block is indented to match indentation of the block (default) oder match indentation of selector.
    - FEATURE: Feature request: Added new Preference option ``cssutils.ser.prefs.omitLeadingZero``. Defines if values between -1 and 1 should omit the 0, like ``.5px``. Minified settings do this, else 0 is kept by default.

    + CHANGE (minor): Some error messages have slightly changed due to a simpler compatibility to Python 3. Problem are any ``u'...'`` texts inside error messages which now are simplified, some without and quotes. Changed are e.g. error messages by ``Property``.

    - **IMPROVEMENT**: Python 3 support. At least the unittests run in Python 2.5, 2.6, 2.7, 3.2 and Jython 2.5.1 now. Both encutils (with support by Fredrik Hedman, thanks!) and cssutils (thanks to Jaraco) and the CSS codec (thanks to Walter D�rwald) seem to work with Python 3 (tested on Python 3.2.1 Win64). Tests use Mock instead of MiniMock now as former is available for Python 2.x and 3.x.

    - **IMPROVEMENT**: Parsing of longer (and probably invalid) ``font`` or ``font-family`` values was *extremely* slow due to a very complex regex. This has been changed and parsing of specific stylesheets using these values should be much faster now. (``macros[Profiles.CSS_LEVEL_2]['font-family']`` is gone so if you used this in your own validation modules you need to check the source in `profiles.py`.)

    - IMPROVEMENT: Fixed Issue #54 (thanks to Simon Sapin): Short hand like `#f80` color value object have correct red, green and blue property values now. Also ``hsl()`` and ``hsla()`` colors report (almost) correct values (due to rounding problems).

    - **Source control has moved to bitbucket https://bitbucket.org/cthedot/cssutils**. Older Issues are currently still at Google Code, newer at Bitbucket. Please do not use Google Code for new issue reports anymore!

0.9.8a2 110611
    - BUGFIX: Fixed Issue #59 which showed a rather strange problem with longer space separated lists of font-family values being so slow to actually stop parsing.

    - BUGFIX/IMPROVEMENT: Fixed Issue #48. ``CSSParser.parseUrl()`` uses the defined fetcher of this parser *for the initial stylesheet* at url too and not just the imported sheets *from* this sheet.

    - BUGFIX: Fixed Issue #50 which prevented cssutils parsing the acid2.css file correctly. Problem were selectors starting directly with ``[class]`` (an attribute selector).

    + **API CHANGE (major)**
        (Known) named colors are parsed as ColorValue objects now. These are the 16 simple colors (black, white, etc) and `transparent` but not all Extended color keywords yet. Also changed ``ColorValue.type`` to ``Value.COLOR_VALUE``. ColorValue has additional properties ``red, green, blue, alpha`` and ``colorType`` which is one of IDENT, HASH or FUNCTION for now.

    + API CHANGE (minor)
        Removed already DEPRECATED ``cssutils.parse`` and ``CSSParser.parse``. Use the more specific functions/methods ``parseFile parseString parseUrl`` instead.

        Removed already DEPRECATED  ``cssutils.log.setlog`` and ``.setloglevel``. Use ``.setLog`` and ``.setLevel`` instead.

        Removed already DEPRECATED  ``cssutils.ser.keepUnkownAtRules`` (note the typo). Use ``.keepUnknownAtRules`` instead.

    - IMPROVEMENT: Added validation profiles for some properties from `CSS Backgrounds and Borders Module Level 3 <http://www.w3.org/TR/css3-background/>`__, `CSS3 Basic User Interface Module <http://www.w3.org/TR/css3-ui/#resize>`__, `CSS Text Level 3 <http://www.w3.org/TR/css3-text/>`__
        mainly  `cursor`, `outline`, `resize`, `box-shadow`, `text-shadow`

0.9.8a1 101212
    + **API CHANGE (major)**
        replace CSSValue with PropertyValue, Value and other classes.

        NEW CLASSES:
            :class:`cssutils.css.PropertyValue`
                replaces CSSValue and CSSValueList

                - is iterable (iterates over all single Value objects which in soruce CSS might be separated by "," "/" or " "
                - a comma separated list of IDENT values is no longer handled as a single String (e.g. ``Arial, sans-serif``)

            :class:`cssutils.css.Value`
                replaces CSSPrimitiveValue with separate ``value`` and ``type`` info (value is typed, so e.g. string for e.g. STRING, IDENT or URI values, int or float) and is base class for more specific values like:

            :class:`cssutils.css.URIValue`
                replaces CSSPrimitiveValue, additional attribute ``uri``

            :class:`cssutils.css.DimensionValue`
                replaces CSSPrimitiveValue, additional attribute ``dimension``

            :class:`cssutils.css.ColorValue`
                replaces CSSPrimitiveValue, additional attribute ``red``, ``green``, ``blue`` and ``alpha``

                **TODO: Not yet complete, only rgb, rgba, hsl, hsla and has values use this object and color and alpha information no done yet!**

            :class:`cssutils.css.CSSFunction`
                replaces CSSPrimitiveValue function, not complete yet

            also renamed ``ExpressionValue`` to :class:`cssutils.css.MSValue` with new API

    - IMPROVEMENT/CHANGE: Validation of color values is tighter now. Values like ``hsl(1, 2, 3)`` do not validate as it must be ``hsl(1, 2%, 3%)``. This mostly effects HSL/A and RGB/A notation.

    - **IMPROVEMENT**: New Value parsing and API accelerate parsing of style declarations which take about 20-30% less time now. Of course this depends on the complexity of your styles.

    + BUGFIX: fixes issue #41, #42, #45, #46
        PropertyValue.value returns value without any comments now, else use PropertyValue.cssText

    - FEATURE: ``cssutils.replaceUrls()`` accepts as first argument a `cssutils.css.CSSStyleSheet` but now also a
        :class:`cssutils.css.CSSStyleDeclaration` object, so may be used like the following which is useful when you work with HTML style attributes::

                >>> style = cssutils.parseStyle("background-image: url(1.png), url('2.png')")
                >>> cssutils.replaceUrls(style, lambda url: 'prefix/'+url)
                >>> print style.cssText
                background-image: url(prefix/1.png), url(prefix/2.png)

        (I omitted the validation error message as more than one background-image is not yet defined in the cssutils validator but does parse through without problems)

    + CHANGE: explicit `+` of any dimension, percentage of number value is kept now instead of being stripped as if put explicitly in the author SHOULD have meant something ;)
6775e9e
@jperkin jperkin referenced this issue from a commit
sno Updating package for Perl 5 module Method::Signatures in
devel/p5-Method-Signatures from 20111020 to 20120523.

pkgsrc changes:
- adding test dependencies
- reordering runtime dependencies for easier check against module
  meta information

Upstream changes:
20120523	May 23 16:36:04 PDT 2012
    Distribution Fixes
	* Fixed META.json

20120517    Thu May 17 20:14:34 PDT 2012
    Promoted to full release

20120514.0117_001   Mon May 14 01:17:38 PDT 2012
    Distribution Fixes
    * Added version number to Method::Signatures::Modifiers.

20111125    Fri Nov 25 01:15:50 PST 2011
    Optimizations
    * Type checks significantly faster.  40% faster with Mouse.
      20% faster with Moose. [github #42]

    Distribution Fixes
    * Added Test::Exception as a build requirement [github #43]
    * Added Moose as a recommended module (with version number)
e1fa0ec
@jperkin jperkin referenced this issue from a commit
taca Update ruby-activeldap to 3.2.2.
Now this package supports Ruby on Rails 3.2.

3.2.2: 2012-09-01

* Supported entry creation by direct ActiveLdap::Base use.
  [Reported by Craig White]
* Started to use Travis CI.

3.2.1: 2012-08-31

* Fixed a bug that ActiveLdap::Base#delete doesn't work.
  [Reported by Craig White]

3.2.0: 2012-08-29

* [GitHub:#39] Supported Rails 3.2.8. [Reported by Ben Langfeld]
* [GitHub:#13] Don't use deprecated Gem.available?. [Patch by sailesh]
* [GitHub:#19] Supported new entry by @ha_many :wrap@. [Patch by Alex Tomlins]
* Supported @:only@ option in XML output.
* [GitHub:#14] Supported nil as single value. [Reported by n3llyb0y]
* [GitHub:#20] Supported ActiveModel::MassAssignmentSecurity.
  [Reported by mihu]
* [GitHub:#24] Supported Ruby 1.9 style Hash syntax in generator.
  [Patch by ursm]
* [GitHub:#25][GitHub:#39] Supported ActiveModel::Dirty.
  [Patch by mihu][Reported by Ben Langfeld]
* [GitHub:#26] Improved speed for dirty. [Patch by mihu]
* [GitHub:#28] Improved speed for initialization. [Patch by mihu]
* [GitHub:#29] Added .gemspec. [Suggested by mklappstuhl]
* [GitHub:#34] Removed an unused method. [Patch by mihu]
* [GitHub:#37] Improved will_paginate support. [Patch by Craig White]
* [GitHub:#40] Added missing test files to .gemspec. [Reported by V���t Ondruch]
* [GitHub:#41] Improved speed for find. [Patch by unixmechanic]
* Changed i18n backend to gettext from fast_gettext again.
* [GitHub:#42] Fixed a bug that optional second is required for GeneralizedTime.
  [Reported by masche842]
36d1371
@jperkin jperkin referenced this issue from a commit
taca Update ruby-logging to 1.8.0.
== 1.8.0 / 2012-09-13

Enhancements
- Appenders handle string encodings [issue #46]
- Support for diagnostic contexts [issues #23, #32, #42]
- Enable JSON formatting of log message [issue #34]

Bug Fixes
- Fix clash with ActiveSupport autoloader (chewie) [issue #39]
7dcc5c7
@jperkin jperkin referenced this issue from a commit
wiz Update to 0.10.1; bump ABI depends due to new fribidi dependency.
libass (0.10.1)
 * Fix letter spacing
 * Add \rSTYLENAME syntax support (GC #43)
 * Fix border generation and border style reset (GC #56)
 * Fix various issues with bug-for-bug compatibility of
   transformations (\fax, \fay, etc.) to VSFilter (GC #46, GC #42)
 * Fix drawing parsing (GC #47)
 * Various fixes to shaper (GC #54, GC #55, GC#59)
 * Fix change detection
 * Add ass_set_line_position API to set a vertical subtitle offset
 * Fix scaling of drawing baseline offset (\pbo) values
 * Fix skipping of zero-width characters for FriBiDi shaper
 * Use LTR text base direction by default, similar to VSFilter

libass (0.10.0)
 * Bidirectional layout and Arabic shaping via FriBidi (GC #13)
 * OpenType shaping via HarfBuzz-ng (GC #13)
 * Add API for shaper configuration
 * Add support for `Language' Script Info property, this can be used for
   hinting the text language
 * Vertical layout improvements
   * Use `vert' and `vkna' OpenType features for vertical glyph variants
   * Position rotated glyphs onto baseline
 * Parse font encoding property for base text direction hinting
 * Refactor cache system
 * Use generic outlines in place of FreeType glyphs
 * Direct outline bitmap rendering
 * Fix whitespace trimming (GC #35)
 * Do not render border if there's no shadow or glyph (GC #29)
 * Adjust spacing after a italic to non-italic style change (GC #37)
 * Fix fade timing
 * Fix x positioning with borders (GC #27)
 * Build system tweaks
612ef5f
@jperkin jperkin referenced this issue from a commit
wiz Update to 0.9.6:
-----
0.9.6
-----

* Issue #44: Test failure on Python 2.4 when MD5 hash doesn't have a `.name`
  attribute.

-----
0.9.5
-----

* Python #17980: Fix security vulnerability in SSL certificate validation.

-----
0.9.4
-----

* Issue #43: Fix issue (introduced in 0.9.1) with version resolution when
  upgrading over other releases of Setuptools.

-----
0.9.3
-----

* Issue #42: Fix new ``AttributeError`` introduced in last fix.

-----
0.9.2
-----

* Issue #42: Fix regression where blank checksums would trigger an
  ``AttributeError``.

-----
0.9.1
-----

* Distribute #386: Allow other positional and keyword arguments to os.open.
* Corrected dependency on certifi mis-referenced in 0.9.
98ab6bc
@jperkin jperkin referenced this issue from a commit
taca Update ruby-net-http-persistent to 2.9.
=== 2.9 / 2013-07-24

* Minor enhancement
  * Added max_requests to avoid ECONNRESET for a server that allows a limited
    number of requests on a connection.  Pull request #42 by James Tucker.
  * Request failures are now raised with the backtrace of the original
    exception.  This gives better insight into the reason for the failure.
    See #41 by Andrew Cholakian.
  * OpenSSL is no longer required.  If OpenSSL is not available an exception
    will be raised when attempting to access HTTPS resources.  Feature request
    by André Arko

* Bug fixes
  * Explain the proper way of sending parameters depending upon the request
    method.  Issue #35 by André Arko.
  * Handle Errno::ETIMEDOUT by retrying the request.  Issue #36 by André Arko.
  * Requests retried by ruby 2.x are no longer retried by net-http-persistent.
  * Finish the connection if an otherwise unhandled exception happens during a
    request.  Bug #46 by Mark Oude Veldhuis.
  * detect_idle_timeout now assumes a StandardError indicates the idle timeout
    has been found.  Bug #43 by James Tucker.
a232434
@jperkin jperkin referenced this issue from a commit
wiz Update to 0.9.6:
-----
0.9.6
-----

* Issue #44: Test failure on Python 2.4 when MD5 hash doesn't have a `.name`
  attribute.

-----
0.9.5
-----

* Python #17980: Fix security vulnerability in SSL certificate validation.

-----
0.9.4
-----

* Issue #43: Fix issue (introduced in 0.9.1) with version resolution when
  upgrading over other releases of Setuptools.

-----
0.9.3
-----

* Issue #42: Fix new ``AttributeError`` introduced in last fix.

-----
0.9.2
-----

* Issue #42: Fix regression where blank checksums would trigger an
  ``AttributeError``.

-----
0.9.1
-----

* Distribute #386: Allow other positional and keyword arguments to os.open.
* Corrected dependency on certifi mis-referenced in 0.9.
33480cb
@jperkin jperkin referenced this issue from a commit
taca Update ruby-net-http-persistent to 2.9.
=== 2.9 / 2013-07-24

* Minor enhancement
  * Added max_requests to avoid ECONNRESET for a server that allows a limited
    number of requests on a connection.  Pull request #42 by James Tucker.
  * Request failures are now raised with the backtrace of the original
    exception.  This gives better insight into the reason for the failure.
    See #41 by Andrew Cholakian.
  * OpenSSL is no longer required.  If OpenSSL is not available an exception
    will be raised when attempting to access HTTPS resources.  Feature request
    by André Arko

* Bug fixes
  * Explain the proper way of sending parameters depending upon the request
    method.  Issue #35 by André Arko.
  * Handle Errno::ETIMEDOUT by retrying the request.  Issue #36 by André Arko.
  * Requests retried by ruby 2.x are no longer retried by net-http-persistent.
  * Finish the connection if an otherwise unhandled exception happens during a
    request.  Bug #46 by Mark Oude Veldhuis.
  * detect_idle_timeout now assumes a StandardError indicates the idle timeout
    has been found.  Bug #43 by James Tucker.
e463d52
@jperkin jperkin referenced this issue from a commit
wiz Import py27-fits-3.2 as graphics/py-fits.
FITS (Flexible Image Transport System) is a data format most used in astronomy.
PyFITS is a Python module for reading, writing, and manipulating FITS files.
The module uses Python's object-oriented features to provide quick, easy, and
efficient access to FITS files. The use of Python's array syntax enables
immediate access to any FITS extension, header cards, or data items.

Changes to 2.4.0 (in py-pyfits):

Changelog
===========

3.2 (2013-11-26)
----------------

Highlights
^^^^^^^^^^

- Rewrote CFITSIO-based backend for handling tile compression of FITS files.
  It now uses a standard CFITSIO instead of heavily modified pieces of CFITSIO
  as before.  PyFITS ships with its own copy of CFITSIO v3.35 which supports
  the latest version of the Tiled Image Convention (v2.3), but system
  packagers may choose instead to strip this out in favor of a
  system-installed version of CFITSIO.  Earlier versions may work, but nothing
  earlier than 3.28 has been tested yet. (#169)

- Added support for reading and writing tables using the Q format for columns.
  The Q format is identical to the P format (variable-length arrays) except
  that it uses 64-bit integers for the data descriptors, allowing more than
  4 GB of variable-length array data in a single table. (#160)

- Added initial support for table columns containing pseudo-unsigned integers.
  This is currently enabled by using the ``uint=True`` option when opening
  files; any table columns with the correct BZERO value will be interpreted
  and returned as arrays of unsigned integers.

- Some refactoring of the table and ``FITS_rec`` modules in order to better
  separate the details of the FITS binary and ASCII table data structures from
  the HDU data structures that encapsulate them.  Most of these changes should
  not be apparent to users (but see API Changes below).


API Changes
^^^^^^^^^^^

- Assigning to values in ``ColDefs.names``, ``ColDefs.formats``,
  ``ColDefs.nulls`` and other attributes of ``ColDefs`` instances that return
  lists of column properties is no longer supported.  Assigning to those lists
  will no longer update the corresponding columns.  Instead, please just
  modify the ``Column`` instances directly (``Column.name``, ``Column.null``,
  etc.)

- The ``pyfits.new_table`` function is marked "pending deprecation".  This
  does not mean it will be removed outright or that its functionality has
  changed.  It will likely be replaced in the future for a function with
  similar, if not subtly different functionality.  A better, if not slightly
  more verbose approach is to use ``pyfits.FITS_rec.from_columns`` to create
  a new ``FITS_rec`` table--this has the same interface as
  ``pyfits.new_table``.  The difference is that it returns a plan ``FITS_rec``
  array, and not an HDU instance.  This ``FITS_rec`` object can then be used
  as the data argument in the constructors for ``BinTableHDU`` (for binary
  tables) or ``TableHDU`` (for ASCII tables).  This is analogous to creating
  an ``ImageHDU`` by passing in an image array.
  ``pyfits.FITS_rec.from_columns`` is just a simpler way of creating a
  FITS-compatible recarray from a FITS column specification.

- The ``updateHeader``, ``updateHeaderData``, and ``updateCompressedData``
  methods of the ``CompDataHDU`` class are pending deprecation and moved to
  internal methods.  The operation of these methods depended too much on
  internal state to be used safely by users; instead they are invoked
  automatically in the appropriate places when reading/writing compressed image
  HDUs.

- The ``CompDataHDU.compData`` attribute is pending deprecation in favor of
  the clearer and more PEP-8 compatible ``CompDataHDU.compressed_data``.

- The constructor for ``CompDataHDU`` has been changed to accept new keyword
  arguments.  The new keyword arguments are essentially the same, but are in
  underscore_separated format rather than camelCase format.  The old arguments
  are still pending deprecation.

- The internal attributes of HDU classes ``_hdrLoc``, ``_datLoc``, and
  ``_datSpan`` have been replaced with ``_header_offset``, ``_data_offset``,
  and ``_data_size`` respectively.  The old attribute names are still pending
  deprecation.  This should only be of interest to advanced users who have
  created their own HDU subclasses.

- The following previously deprecated functions and methods have been removed
  entirely: ``createCard``, ``createCardFromString``, ``upperKey``,
  ``ColDefs.data``, ``setExtensionNameCaseSensitive``, ``_File.getfile``,
  ``_TableBaseHDU.get_coldefs``, ``Header.has_key``, ``Header.ascardlist``.

  If you run your code with a previous version of PyFITS (>= 3.0, < 3.2) with
  the ``python -Wd`` argument, warnings for all deprecated interfaces still in
  use will be displayed.

- Interfaces that were pending deprecation are now fully deprecated.  These
  include: ``create_card``, ``create_card_from_string``, ``upper_key``,
  ``Header.get_history``, and ``Header.get_comment``.

- The ``.name`` attribute on HDUs is now directly tied to the HDU's header, so
  that if ``.header['EXTNAME']`` changes so does ``.name`` and vice-versa.

- The ``pyfits.file.PYTHON_MODES`` constant dict was renamed to
  ``pyfits.file.PYFITS_MODES`` which better reflects its purpose.  This is
  rarely used by client code, however.  Support for the old name will be
  removed by PyFITS 3.4.


Other Changes and Additions
^^^^^^^^^^^^^^^^^^^^^^^^^^^

- The new compression code also adds support for the ZQUANTIZ and ZDITHER0
  keywords added in more recent versions of this FITS Tile Compression spec.
  This includes support for lossless compression with GZIP. (#198) By default
  no dithering is used, but the ``SUBTRACTIVE_DITHER_1`` and
  ``SUBTRACTIVE_DITHER_2`` methods can be enabled by passing the correct
  constants to the ``quantize_method`` argument to the ``CompImageHDU``
  constuctor.  A seed can be manually specified, or automatically generated
  using either the system clock or checksum-based methods via the
  ``dither_seed`` argument.  See the documentation for ``CompImageHDU`` for
  more details. (#198) (spacetelescope/PYFITS#32)

- Images compressed with the Tile Compression standard can now be larger than
  4 GB through support of the Q format. (#159)

- All HDUs now have a ``.ver`` ``.level`` attribute that returns the value of
  the EXTVAL and EXTLEVEL keywords from that HDU's header, if the exist.  This
  was added for consistency with the ``.name`` attribute which returns the
  EXTNAME value from the header.

- Then ``Column`` and ``ColDefs`` classes have new ``.dtype`` attributes
  which give the Numpy dtype for the column data in the first case, and the
  full Numpy compound dtype for each table row in the latter case.

- There was an issue where new tables created defaulted the values in all
  string columns to '0.0'.  Now string columns are filled with empty strings
  by default--this seems a less surprising default, but it may cause
  differences with tables created with older versions of PyFITS.

- Improved round-tripping and preservation of manually assigned column
  attributes (``TNULLn``, ``TSCALn``, etc.) in table HDU headers.
  (astropy/astropy#996)


Bug Fixes
^^^^^^^^^

- Binary tables containing compressed images may, optionally, contain other
  columns unrelated to the tile compression convention. Although this is an
  uncommon use case, it is permitted by the standard. (#159)

- Reworked some of the file I/O routines to allow simpler, more consistent
  mapping between OS-level file modes ('rb', 'wb', 'ab', etc.) and the more
  "PyFITS-specific" modes used by PyFITS like "readonly" and "update".
  That is, if reading a FITS file from an open file object, it doesn't matter
  as much what "mode" it was opened in so long as it has the right
  capabilities (read/write/etc.)  Also works around bugs in the Python io
  module in 2.6+ with regard to file modes. (spacetelescope/PyFITS#33)

- Fixed an obscure issue that can occur on systems that don't have flush to
  memory-mapped files implemented (namely GNU Hurd). (astropy/astropy#968)


3.1.3 (2013-11-26)
------------------

- Disallowed assigning NaN and Inf floating point values as header values,
  since the FITS standard does not define a way to represent them in. Because
  this is undefined, the previous behavior did not make sense and produced
  invalid FITS files. (spacetelescope/PyFITS#11)

- Added a workaround for a bug in 64-bit OSX that could cause truncation when
  writing files greater than 2^32 bytes in size. (spacetelescope/PyFITS#28)

- Fixed a long-standing issue where writing binary tables did not correctly
  write the TFORMn keywords for variable-length array columns (they ommitted
  the max array length parameter of the format).  This was thought fixed in
  v3.1.2, but it was only fixed there for compressed image HDUs and not for
  binary tables in general.

- Fixed an obscure issue that can occur on systems that don't have flush to
  memory-mapped files implemented (namely GNU Hurd). (Backported from 3.2)


3.0.12 (2013-11-26)
-------------------

- Disallowed assigning NaN and Inf floating point values as header values,
  since the FITS standard does not define a way to represent them in. Because
  this is undefined, the previous behavior did not make sense and produced
  invalid FITS files. (Backported from 3.1.3)

- Added a workaround for a bug in 64-bit OSX that could cause truncation when
  writing files greater than 2^32 bytes in size. (Backported from 3.1.3)

- Fixed a long-standing issue where writing binary tables did not correctly
  write the TFORMn keywords for variable-length array columns (they ommitted
  the max array length parameter of the format).  This was thought fixed in
  v3.1.2, but it was only fixed there for compressed image HDUs and not for
  binary tables in general. (Backported from 3.1.3)

- Fixed an obscure issue that can occur on systems that don't have flush to
  memory-mapped files implemented (namely GNU Hurd). (Backported from 3.2)


3.1.2 (2013-04-22)
------------------

- When an error occurs opening a file in fitsdiff the exception message will
  now at least mention which file had the error. (#168)

- Fixed support for opening gzipped FITS files by filename in a writeable mode
  (PyFITS has supported writing to gzip files for some time now, but only
  enabled it when GzipFile objects were passed to ``pyfits.open()`` due to
  some legacy code preventing full gzip support. (#195)

- Added a more helpful error message in the case of malformatted FITS files
  that contain non-float NULL values in an ASCII table but are missing the
  required TNULLn keywords in the header. (#197)

- Fixed an (apparently long-standing) issue where writing compressed images
  did not correctly write the TFORMn keywords for variable-length array
  columns (they ommitted the max array length parameter of the format). (#199)

- Slightly refactored how tables containing variable-length array columns are
  handled to add two improvements: Fixes an issue where accessing the data
  after a call to the `pyfits.getdata` convenience function caused an
  exception, and allows the VLA data to be read from an existing mmap of the
  FITS file. (#200)

- Fixed a bug that could occur when opening a table containing
  multi-dimensional columns (i.e. via the TDIMn keyword) and then writing it
  out to a new file. (#201)

- Added use of the console_scripts entry point to install the fitsdiff and
  fitscheck scripts, which if nothing else provides better Windows support.
  The generated scripts now override the ones explicitly defined in the
  scripts/ directory (which were just trivial stubs to begin with). (#202)

- Fixed a bug on Python 3 where attempting to open a non-existent file on
  Python 3 caused a seemingly unrelated traceback. (#203)

- Fixed a bug in fitsdiff that reported two header keywords containing NaN
  as value as different. (#204)

- Fixed an issue in the tests that caused some tests to fail if pyfits is
  installed with read-only permissions. (#208)

- Fixed a bug where instantiating a ``BinTableHDU`` from a numpy array
  containing boolean fields converted all the values to ``False``. (#215)

- Fixed an issue where passing an array of integers into the constructor of
  ``Column()`` when the column type is floats of the same byte width caused the
  column array to become garbled. (#218)

- Fixed inconsistent behavior in creating CONTINUE cards from byte strings
  versus unicode strings in Python 2--CONTINUE cards can now be created
  properly from unicode strings (so long as they are convertable to ASCII).
  (spacetelescope/PyFITS#1)

- Fixed a couple cases where creating a new table using TDIMn in some of the
  columns could caused a crash. (spacetelescope/PyFITS#3)

- Fixed a bug in parsing HIERARCH keywords that do not have a space after
  the first equals sign (before the value). (spacetelescope/PyFITS#5)

- Prevented extra leading whitespace on HIERARCH keywords from being treated
  as part of the keyword. (spacetelescope/PyFITS#6)

- Fixed a bug where HIERARCH keywords containing lower-case letters was
  mistakenly marked as invalid during header validation.
  (spacetelescope/PyFITS#7)

- Fixed an issue that was ancillary to (spacetelescope/PyFITS#7) where the
  ``Header.index()`` method did not work correctly with HIERARCH keywords
  containing lower-case letters.


3.0.11 (2013-04-17)
-------------------

- Fixed support for opening gzipped FITS files by filename in a writeable mode
  (PyFITS has supported writing to gzip files for some time now, but only
  enabled it when GzipFile objects were passed to ``pyfits.open()`` due to
  some legacy code preventing full gzip support. Backported from 3.1.2. (#195)

- Added a more helpful error message in the case of malformatted FITS files
  that contain non-float NULL values in an ASCII table but are missing the
  required TNULLn keywords in the header. Backported from 3.1.2. (#197)

- Fixed an (apparently long-standing) issue where writing compressed images did
  not correctly write the TFORMn keywords for variable-length array columns
  (they ommitted the max array length parameter of the format). Backported from
  3.1.2. (#199)

- Slightly refactored how tables containing variable-length array columns are
  handled to add two improvements: Fixes an issue where accessing the data
  after a call to the `pyfits.getdata` convenience function caused an
  exception, and allows the VLA data to be read from an existing mmap of the
  FITS file. Backported from 3.1.2. (#200)

- Fixed a bug that could occur when opening a table containing
  multi-dimensional columns (i.e. via the TDIMn keyword) and then writing it
  out to a new file. Backported from 3.1.2. (#201)

- Fixed a bug on Python 3 where attempting to open a non-existent file on
  Python 3 caused a seemingly unrelated traceback. Backported from 3.1.2.
  (#203)

- Fixed a bug in fitsdiff that reported two header keywords containing NaN
  as value as different. Backported from 3.1.2. (#204)

- Fixed an issue in the tests that caused some tests to fail if pyfits is
  installed with read-only permissions. Backported from 3.1.2. (#208)

- Fixed a bug where instantiating a ``BinTableHDU`` from a numpy array
  containing boolean fields converted all the values to ``False``. Backported
  from 3.1.2. (#215)

- Fixed an issue where passing an array of integers into the constructor of
  ``Column()`` when the column type is floats of the same byte width caused the
  column array to become garbled. Backported from 3.1.2. (#218)

- Fixed a couple cases where creating a new table using TDIMn in some of the
  columns could caused a crash. Backported from 3.1.2.
  (spacetelescope/PyFITS#3)


3.1.1 (2013-01-02)
------------------

This is a bug fix release for the 3.1.x series.

Bug Fixes
^^^^^^^^^

- Improved handling of scaled images and pseudo-unsigned integer images in
  compressed image HDUs.  They now work more transparently like normal image
  HDUs with support for the ``do_not_scale_image_data`` and ``uint`` options,
  as well as ``scale_back`` and ``save_backup``.  The ``.scale()`` method
  works better too. (#88)

- Permits non-string values for the EXTNAME keyword when reading in a file,
  rather than throwing an exception due to the malformatting.  Added
  verification for the format of the EXTNAME keyword when writing. (#96)

- Added support for EXTNAME and EXTVER in PRIMARY HDUs.  That is, if EXTNAME
  is specified in the header, it will also be reflected in the ``.name``
  attribute and in ``pyfits.info()``.  These keywords used to be verboten in
  PRIMARY HDUs, but the latest version of the FITS standard allows them.
  (#151)

- HCOMPRESS can again be used to compress data cubes (and higher-dimensional
  arrays) so long as the tile size is effectively 2-dimensional. In fact,
  PyFITS will automatically use compatible tile sizes even if they're not
  explicitly specified. (#171)

- Added support for the optional ``endcard`` parameter in the
  ``Header.fromtextfile()`` and ``Header.totextfile()`` methods.  Although
  ``endcard=False`` was a reasonable default assumption, there are still text
  dumps of FITS headers that include the END card, so this should have been
  more flexible. (#176)

- Fixed a crash when running fitsdiff on two empty (that is, zero row) tables.
  (#178)

- Fixed an issue where opening files containing random groups HDUs in update
  mode could cause an unnecessary rewrite of the file even if none of the
  data is modified. (#179)

- Fixed a bug that could caused a deadlock in the filesystem on OSX if PyFITS
  is used with Numpy 1.7 in some cases. (#180)

- Fixed a crash when generating diff reports from diffs using the
  ``ignore_comments`` options. (#181)

- Fixed some bugs with WCS Paper IV record-valued keyword cards:

  - Cards that looked kind of like RVKCs but were not intended to be were
    over-permissively treated as such--commentary keywords like COMMENT and
    HISTORY were particularly affected. (#183)

  - Looking up a card in a header by its standard FITS keyword only should
    always return the raw value of that card.  That way cards containing
    values that happen to valid RVKCs but were not intended to be will still
    be treated like normal cards. (#184)

  - Looking up a RVKC in a header with only part of the field-specifier (for
    example "DP1.AXIS" instead of "DP1.AXIS.1") was implicitly treated as a
    wildcard lookup. (#184)

- Fixed a crash when diffing two FITS files where at least one contains a
  compressed image HDU which was not recognized as an image instead of a
  table. (#187)

- Fixed bugs in the backwards compatibility layer for the ``CardList.index``
  and ``CardList.count`` methods. (#190)

- Improved ``__repr__`` and text file representation of cards with long values
  that are split into CONTINUE cards. (#193)

- Fixed a crash when trying to assign a long (> 72 character) value to blank
  ('') keywords. This also changed how blank keywords are represented--there
  are still exactly 8 spaces before any commentary content can begin; this
  *may* affect the exact display of header cards that assumed there could be
  fewer spaces in a blank keyword card before the content begins. However, the
  current approach is more in line with the requirements of the FITS standard.
  (#194)


3.0.10 (2013-01-02)
-------------------

- Improved handling of scaled images and pseudo-unsigned integer images in
  compressed image HDUs.  They now work more transparently like normal image
  HDUs with support for the ``do_not_scale_image_data`` and ``uint`` options,
  as well as ``scale_back`` and ``save_backup``.  The ``.scale()`` method
  works better too.  Backported from 3.1.1. (#88)

- Permits non-string values for the EXTNAME keyword when reading in a file,
  rather than throwing an exception due to the malformatting.  Added
  verification for the format of the EXTNAME keyword when writing.  Backported
  from 3.1.1. (#96)

- Added support for EXTNAME and EXTVER in PRIMARY HDUs.  That is, if EXTNAME
  is specified in the header, it will also be reflected in the ``.name``
  attribute and in ``pyfits.info()``.  These keywords used to be verbotten in
  PRIMARY HDUs, but the latest version of the FITS standard allows them.
  Backported from 3.1.1. (#151)

- HCOMPRESS can again be used to compress data cubes (and higher-dimensional
  arrays) so long as the tile size is effectively 2-dimensional. In fact,
  PyFITS will not automatically use compatible tile sizes even if they're not
  explicitly specified.  Backported from 3.1.1. (#171)

- Fixed a bug when writing out files containing zero-width table columns,
  where the TFIELDS keyword would be updated incorrectly, leaving the table
  largely unreadable.  Backported from 3.1.0. (#174)

- Fixed an issue where opening files containing random groups HDUs in update
  mode could cause an unnecessary rewrite of the file even if none of the
  data is modified.  Backported from 3.1.1. (#179)

- Fixed a bug that could caused a deadlock in the filesystem on OSX if PyFITS
  is used with Numpy 1.7 in some cases. Backported from 3.1.1. (#180)


3.1 (2012-08-08)
----------------

Highlights
^^^^^^^^^^

- The ``Header`` object has been significantly reworked, and ``CardList``
  objects are now deprecated (their functionality folded into the ``Header``
  class).  See API Changes below for more details.

- Memory maps are now used by default to access HDU data.  See API Changes
  below for more details.

- Now includes a new version of the ``fitsdiff`` program for comparing two
  FITS files, and a new FITS comparison API used by ``fitsdiff``.  See New
  Features below.

API Changes
^^^^^^^^^^^

- The ``Header`` class has been rewritten, and the ``CardList`` class is
  deprecated.  Most of the basic details of working with FITS headers are
  unchanged, and will not be noticed by most users.  But there are differences
  in some areas that will be of interest to advanced users, and to application
  developers.  For full details of the changes, see the "Header Interface
  Transition Guide" section in the PyFITS documentation.  See ticket #64 on
  the PyFITS Trac for futher details and background. Some highlights are
  listed below:

  * The Header class now fully implements the Python dict interface, and can
    be used interchangably with a dict, where the keys are header keywords.

  * New keywords can be added to the header using normal keyword assignment
    (previously it was necessary to use ``Header.update`` to add new
    keywords).  For example::

        >>> header['NAXIS'] = 2

    will update the existing 'FOO' keyword if it already exists, or add a new
    one if it doesn't exist, just like a dict.

  * It is possible to assign both a value and a comment at the same time using
    a tuple::

        >>> header['NAXIS'] = (2, 'Number of axes')

  * To add/update a new card and ensure it's added in a specific location, use
    ``Header.set()``::

        >>> header.set('NAXIS', 2, 'Number of axes', after='BITPIX')

    This works the same as the old ``Header.update()``.  ``Header.update()``
    still works in the old way too, but is deprecated.

  * Although ``Card`` objects still exist, it generally is not necessary to
    work with them directly.  ``Header.ascardlist()``/``Header.ascard`` are
    deprecated and should not be used.  To directly access the ``Card``
    objects in a header, use ``Header.cards``.

  * To access card comments, it is still possible to either go through the
    card itself, or through ``Header.comments``.  For example::

       >>> header.cards['NAXIS'].comment
       Number of axes
       >>> header.comments['NAXIS']
       Number of axes

  * ``Card`` objects can now be used interchangeably with
    ``(keyword, value, comment)`` 3-tuples.  They still have ``.value`` and
    ``.comment`` attributes as well.  The ``.key`` attribute has been renamed
    to ``.keyword`` for consistency, though ``.key`` is still supported (but
    deprecated).

- Memory mapping is now used by default to access HDU data.  That is,
  ``pyfits.open()`` uses ``memmap=True`` as the default.  This provides better
  performance in the majority of use cases--there are only some I/O intensive
  applications where it might not be desirable.  Enabling mmap by default also
  enabled finding and fixing a large number of bugs in PyFITS' handling of
  memory-mapped data (most of these bug fixes were backported to PyFITS
  3.0.5). (#85)

  * A new ``pyfits.USE_MEMMAP`` global variable was added.  Set
    ``pyfits.USE_MEMMAP = False`` to change the default memmap setting for
    opening files.  This is especially useful for controlling the behavior in
    applications where pyfits is deeply embedded.

  * Likewise, a new ``PYFITS_USE_MEMMAP`` environment variable is supported.
    Set ``PYFITS_USE_MEMMAP = 0`` in your environment to change the default
    behavior.

- The ``size()`` method on HDU objects is now a ``.size`` property--this
  returns the size in bytes of the data portion of the HDU, and in most cases
  is equivalent to ``hdu.data.nbytes`` (#83)

- ``BinTableHDU.tdump`` and ``BinTableHDU.tcreate`` are deprecated--use
  ``BinTableHDU.dump`` and ``BinTableHDU.load`` instead.  The new methods
  output the table data in a slightly different format from previous versions,
  which places quotes around each value.  This format is compatible with data
  dumps from previous versions of PyFITS, but not vice-versa due to a parsing
  bug in older versions.

- Likewise the ``pyfits.tdump`` and ``pyfits.tcreate`` convenience function
  versions of these methods have been renamed ``pyfits.tabledump`` and
  ``pyfits.tableload``.  The old deprecated, but currently retained for
  backwards compatibility. (r1125)

- A new global variable ``pyfits.EXTENSION_NAME_CASE_SENSITIVE`` was added.
  This serves as a replacement for ``pyfits.setExtensionNameCaseSensitive``
  which is not deprecated and may be removed in a future version.  To enable
  case-sensitivity of extension names (i.e. treat 'sci' as distict from 'SCI')
  set ``pyfits.EXTENSION_NAME_CASE_SENSITIVE = True``.  The default is
  ``False``. (r1139)

- A new global configuration variable ``pyfits.STRIP_HEADER_WHITESPACE`` was
  added.  By default, if a string value in a header contains trailing
  whitespace, that whitespace is automatically removed when the value is read.
  Now if you set ``pyfits.STRIP_HEADER_WHITESPACE = False`` all whitespace is
  preserved. (#146)

- The old ``classExtensions`` extension mechanism (which was deprecated in
  PyFITS 3.0) is removed outright.  To our knowledge it was no longer used
  anywhere. (r1309)

- Warning messages from PyFITS issued through the Python warnings API are now
  output to stderr instead of stdout, as is the default.  PyFITS no longer
  modifies the default behavior of the warnings module with respect to which
  stream it outputs to. (r1319)

- The ``checksum`` argument to ``pyfits.open()`` now accepts a value of
  'remove', which causes any existing CHECKSUM/DATASUM keywords to be ignored,
  and removed when the file is saved.

New Features
^^^^^^^^^^^^

- Added support for the proposed "FITS" extension HDU type.  See
  http://listmgr.cv.nrao.edu/pipermail/fitsbits/2002-April/001094.html.  FITS
  HDUs contain an entire FITS file embedded in their data section.  `FitsHDU`
  objects work like other HDU types in PyFITS.  Their ``.data`` attribute
  returns the raw data array.  However, they have a special ``.hdulist``
  attribute which processes the data as a FITS file and returns it as an
  in-memory HDUList object.  FitsHDU objects also support a
  ``FitsHDU.fromhdulist()`` classmethod which returns a new `FitsHDU` object
  that embeds the supplied HDUList. (#80)

- Added a new ``.is_image`` attribute on HDU objects, which is True if the HDU
  data is an 'image' as opposed to a table or something else.  Here the
  meaning of 'image' is fairly loose, and mostly just means a Primary or Image
  extension HDU, or possibly a compressed image HDU (#71)

- Added an ``HDUList.fromstring`` classmethod which can parse a FITS file
  already in memory and instantiate and ``HDUList`` object from it.  This
  could be useful for integrating PyFITS with other libraries that work on
  FITS file, such as CFITSIO.  It may also be useful in streaming
  applications.  The name is a slight misnomer, in that it actually accepts
  any Python object that implements the buffer interface, which includes
  ``bytes``, ``bytearray``, ``memoryview``, ``numpy.ndarray``, etc. (#90)

- Added a new ``pyfits.diff`` module which contains facilities for comparing
  FITS files.  One can use the ``pyfits.diff.FITSDiff`` class to compare two
  FITS files in their entirety.  There is also a ``pyfits.diff.HeaderDiff``
  class for just comparing two FITS headers, and other similar interfaces.
  See the PyFITS Documentation for more details on this interface.  The
  ``pyfits.diff`` module powers the new ``fitsdiff`` program installed with
  PyFITS.  After installing PyFITS, run ``fitsdiff --help`` for usage details.

- ``pyfits.open()`` now accepts a ``scale_back`` argument.  If set to
  ``True``, this automatically scales the data using the original BZERO and
  BSCALE parameters the file had when it was first opened, if any, as well as
  the original BITPIX.  For example, if the original BITPIX were 16, this
  would be equivalent to calling ``hdu.scale('int16', 'old')`` just before
  calling ``flush()`` or ``close()`` on the file.  This option applies to all
  HDUs in the file. (#120)

- ``pyfits.open()`` now accepts a ``save_backup`` argument.  If set to
  ``True``, this automatically saves a backup of the original file before
  flushing any changes to it (this of course only applies to update and append
  mode).  This may be especially useful when working with scaled image data.
  (#121)

Changes in Behavior
^^^^^^^^^^^^^^^^^^^

- Warnings from PyFITS are not output to stderr by default, instead of stdout
  as it has been for some time.  This is contrary to most users' expectations
  and makes it more difficult for them to separate output from PyFITS from the
  desired output for their scripts. (r1319)

Bug Fixes
^^^^^^^^^

- Fixed ``pyfits.tcreate()`` (now ``pyfits.tableload()``) to be more robust
  when encountering blank lines in a column definition file (#14)

- Fixed a fairly rare crash that could occur in the handling of CONTINUE cards
  when using Numpy 1.4 or lower (though 1.4 is the oldest version supported by
  PyFITS). (r1330)

- Fixed ``_BaseHDU.fromstring`` to actually correctly instantiate an HDU
  object from a string/buffer containing the header and data of that HDU.
  This allowed for the implementation of ``HDUList.fromstring`` described
  above. (#90)

- Fixed a rare corner case where, in some use cases, (mildly, recoverably)
  malformatted float values in headers were not properly returned as floats.
  (#137)

- Fixed a corollary to the previous bug where float values with a leading zero
  before the decimal point had the leading zero unnecessarily removed when
  saving changes to the file (eg. "0.001" would be written back as ".001" even
  if no changes were otherwise made to the file). (#137)

- When opening a file containing CHECKSUM and/or DATASUM keywords in update
  mode, the CHECKSUM/DATASUM are updated and preserved even if the file was
  opened with checksum=False.  This change in behavior prevents checksums from
  being unintentionally removed. (#148)

- Fixed a bug where ``ImageHDU.scale(option='old')`` wasn't working at all--it
  was not restoring the image to its original BSCALE and BZERO values. (#162)

- Fixed a bug when writing out files containing zero-width table columns,
  where the TFIELDS keyword would be updated incorrectly, leaving the table
  largely unreadable.  This fix will be backported to the 3.0.x series in
  version 3.0.10.  (#174)


3.0.9 (2012-08-06)
------------------

This is a bug fix release for the 3.0.x series.

Bug Fixes
^^^^^^^^^

- Fixed ``Header.values()``/``Header.itervalues()`` and ``Header.items()``/
  ``Header.iteritems()`` to correctly return the different values for
  duplicate keywords (particularly commentary keywords like HISTORY and
  COMMENT).  This makes the old Header implementation slightly more compatible
  with the new implementation in PyFITS 3.1. (#127)

  .. note::
      This fix did not change the existing behavior from earlier PyFITS
      versions where ``Header.keys()`` returns all keywords in the header with
      duplicates removed.  PyFITS 3.1 changes that behavior, so that
      ``Header.keys()`` includes duplicates.

- Fixed a bug where ``ImageHDU.scale(option='old')`` wasn't working at all--it
  was not restoring the image to its original BSCALE and BZERO values. (#162)

- Fixed a bug where opening a file containing compressed image HDUs in
  'update' mode and then immediately closing it without making any changes
  caused the file to be rewritten unncessarily. (#167)

- Fixed two memory leaks that could occur when writing compressed image data,
  or in some cases when opening files containing compressed image HDUs in
  'update' mode. (#168)


3.0.8 (2012-06-04)
------------------

Changes in Behavior
^^^^^^^^^^^^^^^^^^^

- Prior to this release, image data sections did not work with scaled
  data--that is, images with non-trivial BSCALE and/or BZERO values.
  Previously, in order to read such images in sections, it was necessary to
  manually apply the BSCALE+BZERO to each section.  It's worth noting that
  sections *did* support pseudo-unsigned ints (flakily).  This change just
  extends that support for general BSCALE+BZERO values.

Bug Fixes
^^^^^^^^^

- Fixed a bug that prevented updates to values in boolean table columns from
  being saved.  This turned out to be a symptom of a deeper problem that could
  prevent other table updates from being saved as well. (#139)

- Fixed a corner case in which a keyword comment ending with the string "END"
  could, in some circumstances, cause headers (and the rest of the file after
  that point) to be misread. (#142)

- Fixed support for scaled image data and psuedo-unsigned ints in image data
  sections (``hdu.section``).  Previously this was not supported at all.  At
  some point support was supposedly added, but it was buggy and incomplete.
  Now the feature seems to work much better. (#143)

- Fixed the documentation to point out that image data sections *do* support
  non-contiguous slices (and have for a long time).  The documentation was
  never updated to reflect this, and misinformed users that only contiguous
  slices were supported, leading to some confusion. (#144)

- Fixed a bug where creating an ``HDUList`` object containing multiple PRIMARY
  HDUs caused an infinite recursion when validating the object prior to
  writing to a file. (#145)

- Fixed a rare but serious case where saving an update to a file that
  previously had a CHECKSUM and/or DATASUM keyword, but removed the checksum
  in saving, could cause the file to be slightly corrupted and unreadable.
  (#147)

- Fixed problems with reading "non-standard" FITS files with primary headers
  containing SIMPLE = F.  PyFITS has never made many guarantees as to how such
  files are handled.  But it should at least be possible to read their
  headers, and the data if possible.  Saving changes to such a file should not
  try to prepend an unwanted valid PRIMARY HDU. (#157)

- Fixed a bug where opening an image with ``disable_image_compression = True``
  caused compression to be disabled for all subsequent ``pyfits.open()`` calls.
  (r1651)


3.0.7 (2012-04-10)
------------------

Changes in Behavior
^^^^^^^^^^^^^^^^^^^

- Slices of GroupData objects now return new GroupData objects instead of
  extended multi-row _Group objects. This is analogous to how PyFITS 3.0 fixed
  FITS_rec slicing, and should have been fixed for GroupData at the same time.
  The old behavior caused bugs where functions internal to Numpy expected that
  slicing an ndarray would return a new ndarray.  As this is a rare usecase
  with a rare feature most users are unlikely to be affected by this change.

- The previously internal _Group object for representing individual group
  records in a GroupData object are renamed Group and are now a public
  interface.  However, there's almost no good reason to create Group objects
  directly, so it shouldn't be considered a "new feature".

- An annoyance from PyFITS 3.0.6 was fixed, where the value of the EXTEND
  keyword was always being set to F if there are not actually any extension
  HDUs.  It was unnecessary to modify this value.

Bug Fixes
^^^^^^^^^

- Fixed GroupData objects to return new GroupData objects when sliced instead
  of _Group record objects.  See "Changes in behavior" above for more details.

- Fixed slicing of Group objects--previously it was not possible to slice
  slice them at all.

- Made it possible to assign `np.bool_` objects as header values. (#123)

- Fixed overly strict handling of the EXTEND keyword; see "Changes in
  behavior" above. (#124)

- Fixed many cases where an HDU's header would be marked as "modified" by
  PyFITS and rewritten, even when no changes to the header are necessary.
  (#125)

- Fixed a bug where the values of the PTYPEn keywords in a random groups HDU
  were forced to be all lower-case when saving the file. (#130)

- Removed an unnecessary inline import in `ExtensionHDU.__setattr__` that was
  causing some slowdown when opening files containing a large number of
  extensions, plus a few other small (but not insignficant) performance
  improvements thanks to Julian Taylor. (#133)

- Fixed a regression where header blocks containing invalid end-of-header
  padding (i.e. null bytes instead of spaces) couldn't be parsed by PyFITS.
  Such headers can be parsed again, but a warning is raised, as such headers
  are not valid FITS. (#136)

- Fixed a memory leak where table data in random groups HDUs weren't being
  garbage collected. (#138)


3.0.6 (2012-02-29)
------------------

Highlights
^^^^^^^^^^

The main reason for this release is to fix an issue that was introduced in
PyFITS 3.0.5 where merely opening a file containing scaled data (that is, with
non-trivial BSCALE and BZERO keywords) in 'update' mode would cause the data
to be automatically rescaled--possibly converting the data from ints to
floats--as soon as the file is closed, even if the application did not touch
the data.  Now PyFITS will only rescale the data in an extension when the data
is actually accessed by the application.  So opening a file in 'update' mode
in order to modify the header or append new extensions will not cause any
change to the data in existing extensions.

This release also fixes a few Windows-specific bugs found through more
extensive Windows testing, and other miscellaneous bugs.

Bug Fixes
^^^^^^^^^

- More accurate error messages when opening files containing invalid header
  cards. (#109)

- Fixed a possible reference cycle/memory leak that was caught through more
  extensive testing on Windows. (#112)

- Fixed 'ostream' mode to open the underlying file in 'wb' mode instead of 'w'
  mode. (#112)

- Fixed a Windows-only issue where trying to save updates to a resized FITS
  file could result in a crash due to there being open mmaps on that file.
  (#112)

- Fixed a crash when trying to create a FITS table (i.e. with new_table())
  from a Numpy array containing bool fields. (#113)

- Fixed a bug where manually initializing an ``HDUList`` with a list of of
  HDUs wouldn't set the correct EXTEND keyword value on the primary HDU.
  (#114)

- Fixed a crash that could occur when trying to deepcopy a Header in Python <
  2.7. (#115)

- Fixed an issue where merely opening a scaled image in 'update' mode would
  cause the data to be converted to floats when the file is closed. (#119)


3.0.5 (2012-01-30)
------------------

- Fixed a crash that could occur when accessing image sections of files
  opened with memmap=True. (r1211)

- Fixed the inconsistency in the behavior of files opened in 'readonly' mode
  when memmap=True vs. when memmap=False.  In the latter case, although
  changes to array data were not saved to disk, it was possible to update the
  array data in memory.  On the other hand with memmap=True, 'readonly' mode
  prevented even in-memory modification to the data.  This is what
  'copyonwrite' mode was for, but difference in behavior was confusing.  Now
  'readonly' is equivalent to 'copyonwrite' when using memmap.  If the old
  behavior of denying changes to the array data is necessary, a new
  'denywrite' mode may be used, though it is only applicable to files opened
  with memmap. (r1275)

- Fixed an issue where files opened with memmap=True would return image data
  as a raw numpy.memmap object, which can cause some unexpected
  behaviors--instead memmap object is viewed as a numpy.ndarray. (r1285)

- Fixed an issue in Python 3 where a workaround for a bug in Numpy on Python 3
  interacted badly with some other software, namely to vo.table package (and
  possibly others). (r1320, r1337, and #110)

- Fixed buggy behavior in the handling of SIGINTs (i.e. Ctrl-C keyboard
  interrupts) while flushing changes to a FITS file.  PyFITS already prevented
  SIGINTs from causing an incomplete flush, but did not clean up the signal
  handlers properly afterwards, or reraise the keyboard interrupt once the
  flush was complete. (r1321)

- Fixed a crash that could occur in Python 3 when opening files with checksum
  checking enabled. (r1336)

- Fixed a small bug that could cause a crash in the `StreamingHDU` interface
  when using Numpy below version 1.5.

- Fixed a crash that could occur when creating a new `CompImageHDU` from an
  array of big-endian data. (#104)

- Fixed a crash when opening a file with extra zero padding at the end.
  Though FITS files should not have such padding, it's not explictly forbidden
  by the format either, and PyFITS shouldn't stumble over it. (#106)

- Fixed a major slowdown in opening tables containing large columns of string
  values.  (#111)


3.0.4 (2011-11-22)
------------------

- Fixed a crash when writing HCOMPRESS compressed images that could happen on
  Python 2.5 and 2.6. (r1217)

- Fixed a crash when slicing an table in a file opened in 'readonly' mode with
  memmap=True. (r1230)

- Writing changes to a file or writing to a new file verifies the output in
  'fix' mode by default instead of 'exception'--that is, PyFITS will
  automatically fix common FITS format errors rather than raising an
  exception. (r1243)

- Fixed a bug where convenience functions such as getval() and getheader()
  crashed when specifying just 'PRIMARY' as the extension to use (r1263).

- Fixed a bug that prevented passing keyword arguments (beyond the standard
  data and header arguments) as positional arguments to the constructors of
  extension HDU classes.

- Fixed some tests that were failing on Windows--in this case the tests
  themselves failed to close some temp files and Windows refused to delete them
  while there were still open handles on them. (r1295)

- Fixed an issue with floating point formatting in header values on Python 2.5
  for Windows (and possibly other platforms).  The exponent was zero-padded to
  3 digits; although the FITS standard makes no specification on this, the
  formatting is now normalized to always pad the exponent to two digits.
  (r1295)

- Fixed a bug where long commentary cards (such as HISTORY and COMMENT) were
  broken into multiple CONTINUE cards.  However, commentary cards are not
  expected to be found in CONTINUE cards.  Instead these long cards are broken
  into multiple commentary cards. (#97)

- GZIP/ZIP-compressed FITS files can be detected and opened regardless of
  their filename extension. (#99)

- Fixed a serious bug where opening scaled images in 'update' mode and then
  closing the file without touching the data would cause the file to be
  corrupted. (#101)


3.0.3 (2011-10-05)
------------------

- Fixed several small bugs involving corner cases in record-valued keyword
  cards (#70)

- In some cases HDU creation failed if the first keyword value in the header
  was not a string value (#89)

- Fixed a crash when trying to compute the HDU checksum when the data array
  contains an odd number of bytes (#91)

- Disabled an unnecessary warning that was displayed on opening compressed
  HDUs with disable_image_compression = True (#92)

- Fixed a typo in code for handling HCOMPRESS compressed images.


3.0.2 (2011-09-23)
------------------

- The ``BinTableHDU.tcreate`` method and by extension the ``pyfits.tcreate``
  function don't get tripped up by blank lines anymore (#14)

- The presence, value, and position of the EXTEND keyword in Primary HDUs is
  verified when reading/writing a FITS file (#32)

- Improved documentation (in warning messages as well as in the handbook) that
  PyFITS uses zero-based indexing (as one would expect for C/Python code, but
  contrary to the PyFITS standard which was written with FORTRAN in mind)
  (#68)

- Fixed a bug where updating a header card comment could cause the value to be
  lost if it had not already been read from the card image string.

- Fixed a related bug where changes made directly to Card object in a header
  (i.e. assigning directly to card.value or card.comment) would not propagate
  when flushing changes to the file (#69) [Note: This and the bug above it
  were originally reported as being fixed in version 3.0.1, but the fix was
  never included in the release.]

- Improved file handling, particularly in Python 3 which had a few small file
  I/O-related bugs (#76)

- Fixed a bug where updating a FITS file would sometimes cause it to lose its
  original file permissions (#79)

- Fixed the handling of TDIMn keywords; 3.0 added support for them, but got
  the axis order backards (they were treated as though they were row-major)
  (#82)

- Fixed a crash when a FITS file containing scaled data is opened and
  immediately written to a new file without explicitly viewing the data first
  (#84)

- Fixed a bug where creating a table with columns named either 'names' or
  'formats' resulted in an infinite recursion (#86)


3.0.1 (2011-09-12)
------------------

- Fixed a bug where updating a header card comment could cause the value to be
  lost if it had not already been read from the card image string.

- Changed ``_TableBaseHDU.data`` so that if the data contain an empty table a
  ``FITS_rec`` object with zero rows is returned rather than ``None``.

- The ``.key`` attribute of ``RecordValuedKeywordCards`` now returns the full
  keyword+field-specifier value, instead of just the plain keyword (#46)

- Fixed a related bug where changes made directly to Card object in a header
  (i.e. assigning directly to card.value or card.comment) would not propagate
  when flushing changes to the file (#69)

- Fixed a bug where writing a table with zero rows could fail in some cases
  (#72)

- Miscellanous small bug fixes that were causing some tests to fail,
  particularly on Python 3 (#74, #75)

- Fixed a bug where creating a table column from an array in non-native byte
  order would not preserve the byte order, thus interpreting the column array
  using the wrong byte order (#77)


3.0.0 (2011-08-23)
--------------------

- Contains major changes, bumping the version to 3.0

- Large amounts of refactoring and reorganization of the code; tried to
  preserve public API backwards-compatibility with older versions (private API
  has many changes and is not guaranteed to be backwards-compatible).  There
  are a few small public API changes to be aware of:

  * The pyfits.rec module has been removed completely.  If your version of
    numpy does not have the numpy.core.records module it is too old to be used
    with PyFITS.

  * The ``Header.ascardlist()`` method is deprecated--use the ``.ascard``
    attribute instead.

  * ``Card`` instances have a new ``.cardimage`` attribute that should be used
    rather than ``.ascardimage()``, which may become deprecated.

  * The ``Card.fromstring()`` method is now a classmethod.  It returns a new
    ``Card`` instance rather than modifying an existing instance.

  * The ``req_cards()`` method on HDU instances has changed:  The ``pos``
    argument is not longer a string.  It is either an integer value (meaning
    the card's position must match that value) or it can be a function that
    takes the card's position as it's argument, and returns True if the
    position is valid.  Likewise, the ``test`` argument no longer takes a
    string, but instead a function that validates the card's value and returns
    True or False.

  * The ``get_coldefs()`` method of table HDUs is deprecated.  Use the
    ``.columns`` attribute instead.

  * The ``ColDefs.data`` attribute is deprecated--use ``ColDefs.columns``
    instead (though in general you shouldn't mess with it directly--it might
    become internal at some point).

  * ``FITS_record`` objects take ``start`` and ``end`` as arguments instead of
    ``startColumn`` and ``endColumn`` (these are rarely created manually, so
    it's unlikely that this change will affect anyone).

  * ``BinTableHDU.tcreate()`` is now a classmethod, and returns a new
    ``BinTableHDU`` instance.

  * Use ``ExtensionHDU`` and ``NonstandardExtHDU`` for making new extension HDU
    classes.  They are now public interfaces, wheres previously they were
    private and prefixed with underscores.

  * Possibly others--please report if you find any changes that cause
    difficulties.

- Calls to deprecated functions will display a Deprecation warning.  However,
  in Python 2.7 and up Deprecation warnings are ignored by default, so run
  Python with the `-Wd` option to see if you're using any deprecated
  functions.  If we get close to actually removing any functions, we might
  make the Deprecation warnings display by default.

- Added basic Python 3 support

- Added support for multi-dimensional columns in tables as specified by the
  TDIMn keywords (#47)

- Fixed a major memory leak that occurred when creating new tables with the
  ``new_table()`` function (#49)
  be padded with zero-bytes) vs ASCII tables (where strings are padded with
  spaces) (#15)

- Fixed a bug in which the case of Random Access Group parameters names was not
  preserved when writing (#41)

- Added support for binary table fields with zero width (#42)

- Added support for wider integer types in ASCII tables; although this is non-
  standard, some GEIS images require it (#45)

- Fixed a bug that caused the index_of() method of HDULists to crash when the
  HDUList object is created from scratch (#48)

- Fixed the behavior of string padding in binary tables (where strings should
  be padded with nulls instead of spaces)

- Fixed a rare issue that caused excessive memory usage when computing
  checksums using a non-standard block size (see r818)

- Add support for forced uint data in image sections (#53)

- Fixed an issue where variable-length array columns were not extended when
  creating a new table with more rows than the original (#54)

- Fixed tuple and list-based indexing of FITS_rec objects (#55)

- Fixed an issue where BZERO and BSCALE keywords were appended to headers in
  the wrong location (#56)

- ``FITS_record`` objects (table rows) have full slicing support, including
  stepping, etc. (#59)

- Fixed a bug where updating multiple files simultaneously (such as when
  running parallel processes) could lead to a race condition with mktemp()
  (#61)

- Fixed a bug where compressed image headers were not in the order expected by
  the funpack utility (#62)
89417a9
@mamash
Owner

This should no longer apply to any recent image.

@mamash mamash closed this
@jperkin jperkin referenced this issue from a commit
wiz Update to 0.10.1; bump ABI depends due to new fribidi dependency.
libass (0.10.1)
 * Fix letter spacing
 * Add \rSTYLENAME syntax support (GC #43)
 * Fix border generation and border style reset (GC #56)
 * Fix various issues with bug-for-bug compatibility of
   transformations (\fax, \fay, etc.) to VSFilter (GC #46, GC #42)
 * Fix drawing parsing (GC #47)
 * Various fixes to shaper (GC #54, GC #55, GC#59)
 * Fix change detection
 * Add ass_set_line_position API to set a vertical subtitle offset
 * Fix scaling of drawing baseline offset (\pbo) values
 * Fix skipping of zero-width characters for FriBiDi shaper
 * Use LTR text base direction by default, similar to VSFilter

libass (0.10.0)
 * Bidirectional layout and Arabic shaping via FriBidi (GC #13)
 * OpenType shaping via HarfBuzz-ng (GC #13)
 * Add API for shaper configuration
 * Add support for `Language' Script Info property, this can be used for
   hinting the text language
 * Vertical layout improvements
   * Use `vert' and `vkna' OpenType features for vertical glyph variants
   * Position rotated glyphs onto baseline
 * Parse font encoding property for base text direction hinting
 * Refactor cache system
 * Use generic outlines in place of FreeType glyphs
 * Direct outline bitmap rendering
 * Fix whitespace trimming (GC #35)
 * Do not render border if there's no shadow or glyph (GC #29)
 * Adjust spacing after a italic to non-italic style change (GC #37)
 * Fix fade timing
 * Fix x positioning with borders (GC #27)
 * Build system tweaks
2d196b1
@jperkin jperkin referenced this issue from a commit
wiz Update to 0.9.6:
-----
0.9.6
-----

* Issue #44: Test failure on Python 2.4 when MD5 hash doesn't have a `.name`
  attribute.

-----
0.9.5
-----

* Python #17980: Fix security vulnerability in SSL certificate validation.

-----
0.9.4
-----

* Issue #43: Fix issue (introduced in 0.9.1) with version resolution when
  upgrading over other releases of Setuptools.

-----
0.9.3
-----

* Issue #42: Fix new ``AttributeError`` introduced in last fix.

-----
0.9.2
-----

* Issue #42: Fix regression where blank checksums would trigger an
  ``AttributeError``.

-----
0.9.1
-----

* Distribute #386: Allow other positional and keyword arguments to os.open.
* Corrected dependency on certifi mis-referenced in 0.9.
dea6f42
@jperkin jperkin referenced this issue from a commit
taca Update ruby-net-http-persistent to 2.9.
=== 2.9 / 2013-07-24

* Minor enhancement
  * Added max_requests to avoid ECONNRESET for a server that allows a limited
    number of requests on a connection.  Pull request #42 by James Tucker.
  * Request failures are now raised with the backtrace of the original
    exception.  This gives better insight into the reason for the failure.
    See #41 by Andrew Cholakian.
  * OpenSSL is no longer required.  If OpenSSL is not available an exception
    will be raised when attempting to access HTTPS resources.  Feature request
    by André Arko

* Bug fixes
  * Explain the proper way of sending parameters depending upon the request
    method.  Issue #35 by André Arko.
  * Handle Errno::ETIMEDOUT by retrying the request.  Issue #36 by André Arko.
  * Requests retried by ruby 2.x are no longer retried by net-http-persistent.
  * Finish the connection if an otherwise unhandled exception happens during a
    request.  Bug #46 by Mark Oude Veldhuis.
  * detect_idle_timeout now assumes a StandardError indicates the idle timeout
    has been found.  Bug #43 by James Tucker.
bbb8fba
@jperkin jperkin referenced this issue from a commit
wiz Import py27-fits-3.2 as graphics/py-fits.
FITS (Flexible Image Transport System) is a data format most used in astronomy.
PyFITS is a Python module for reading, writing, and manipulating FITS files.
The module uses Python's object-oriented features to provide quick, easy, and
efficient access to FITS files. The use of Python's array syntax enables
immediate access to any FITS extension, header cards, or data items.

Changes to 2.4.0 (in py-pyfits):

Changelog
===========

3.2 (2013-11-26)
----------------

Highlights
^^^^^^^^^^

- Rewrote CFITSIO-based backend for handling tile compression of FITS files.
  It now uses a standard CFITSIO instead of heavily modified pieces of CFITSIO
  as before.  PyFITS ships with its own copy of CFITSIO v3.35 which supports
  the latest version of the Tiled Image Convention (v2.3), but system
  packagers may choose instead to strip this out in favor of a
  system-installed version of CFITSIO.  Earlier versions may work, but nothing
  earlier than 3.28 has been tested yet. (#169)

- Added support for reading and writing tables using the Q format for columns.
  The Q format is identical to the P format (variable-length arrays) except
  that it uses 64-bit integers for the data descriptors, allowing more than
  4 GB of variable-length array data in a single table. (#160)

- Added initial support for table columns containing pseudo-unsigned integers.
  This is currently enabled by using the ``uint=True`` option when opening
  files; any table columns with the correct BZERO value will be interpreted
  and returned as arrays of unsigned integers.

- Some refactoring of the table and ``FITS_rec`` modules in order to better
  separate the details of the FITS binary and ASCII table data structures from
  the HDU data structures that encapsulate them.  Most of these changes should
  not be apparent to users (but see API Changes below).


API Changes
^^^^^^^^^^^

- Assigning to values in ``ColDefs.names``, ``ColDefs.formats``,
  ``ColDefs.nulls`` and other attributes of ``ColDefs`` instances that return
  lists of column properties is no longer supported.  Assigning to those lists
  will no longer update the corresponding columns.  Instead, please just
  modify the ``Column`` instances directly (``Column.name``, ``Column.null``,
  etc.)

- The ``pyfits.new_table`` function is marked "pending deprecation".  This
  does not mean it will be removed outright or that its functionality has
  changed.  It will likely be replaced in the future for a function with
  similar, if not subtly different functionality.  A better, if not slightly
  more verbose approach is to use ``pyfits.FITS_rec.from_columns`` to create
  a new ``FITS_rec`` table--this has the same interface as
  ``pyfits.new_table``.  The difference is that it returns a plan ``FITS_rec``
  array, and not an HDU instance.  This ``FITS_rec`` object can then be used
  as the data argument in the constructors for ``BinTableHDU`` (for binary
  tables) or ``TableHDU`` (for ASCII tables).  This is analogous to creating
  an ``ImageHDU`` by passing in an image array.
  ``pyfits.FITS_rec.from_columns`` is just a simpler way of creating a
  FITS-compatible recarray from a FITS column specification.

- The ``updateHeader``, ``updateHeaderData``, and ``updateCompressedData``
  methods of the ``CompDataHDU`` class are pending deprecation and moved to
  internal methods.  The operation of these methods depended too much on
  internal state to be used safely by users; instead they are invoked
  automatically in the appropriate places when reading/writing compressed image
  HDUs.

- The ``CompDataHDU.compData`` attribute is pending deprecation in favor of
  the clearer and more PEP-8 compatible ``CompDataHDU.compressed_data``.

- The constructor for ``CompDataHDU`` has been changed to accept new keyword
  arguments.  The new keyword arguments are essentially the same, but are in
  underscore_separated format rather than camelCase format.  The old arguments
  are still pending deprecation.

- The internal attributes of HDU classes ``_hdrLoc``, ``_datLoc``, and
  ``_datSpan`` have been replaced with ``_header_offset``, ``_data_offset``,
  and ``_data_size`` respectively.  The old attribute names are still pending
  deprecation.  This should only be of interest to advanced users who have
  created their own HDU subclasses.

- The following previously deprecated functions and methods have been removed
  entirely: ``createCard``, ``createCardFromString``, ``upperKey``,
  ``ColDefs.data``, ``setExtensionNameCaseSensitive``, ``_File.getfile``,
  ``_TableBaseHDU.get_coldefs``, ``Header.has_key``, ``Header.ascardlist``.

  If you run your code with a previous version of PyFITS (>= 3.0, < 3.2) with
  the ``python -Wd`` argument, warnings for all deprecated interfaces still in
  use will be displayed.

- Interfaces that were pending deprecation are now fully deprecated.  These
  include: ``create_card``, ``create_card_from_string``, ``upper_key``,
  ``Header.get_history``, and ``Header.get_comment``.

- The ``.name`` attribute on HDUs is now directly tied to the HDU's header, so
  that if ``.header['EXTNAME']`` changes so does ``.name`` and vice-versa.

- The ``pyfits.file.PYTHON_MODES`` constant dict was renamed to
  ``pyfits.file.PYFITS_MODES`` which better reflects its purpose.  This is
  rarely used by client code, however.  Support for the old name will be
  removed by PyFITS 3.4.


Other Changes and Additions
^^^^^^^^^^^^^^^^^^^^^^^^^^^

- The new compression code also adds support for the ZQUANTIZ and ZDITHER0
  keywords added in more recent versions of this FITS Tile Compression spec.
  This includes support for lossless compression with GZIP. (#198) By default
  no dithering is used, but the ``SUBTRACTIVE_DITHER_1`` and
  ``SUBTRACTIVE_DITHER_2`` methods can be enabled by passing the correct
  constants to the ``quantize_method`` argument to the ``CompImageHDU``
  constuctor.  A seed can be manually specified, or automatically generated
  using either the system clock or checksum-based methods via the
  ``dither_seed`` argument.  See the documentation for ``CompImageHDU`` for
  more details. (#198) (spacetelescope/PYFITS#32)

- Images compressed with the Tile Compression standard can now be larger than
  4 GB through support of the Q format. (#159)

- All HDUs now have a ``.ver`` ``.level`` attribute that returns the value of
  the EXTVAL and EXTLEVEL keywords from that HDU's header, if the exist.  This
  was added for consistency with the ``.name`` attribute which returns the
  EXTNAME value from the header.

- Then ``Column`` and ``ColDefs`` classes have new ``.dtype`` attributes
  which give the Numpy dtype for the column data in the first case, and the
  full Numpy compound dtype for each table row in the latter case.

- There was an issue where new tables created defaulted the values in all
  string columns to '0.0'.  Now string columns are filled with empty strings
  by default--this seems a less surprising default, but it may cause
  differences with tables created with older versions of PyFITS.

- Improved round-tripping and preservation of manually assigned column
  attributes (``TNULLn``, ``TSCALn``, etc.) in table HDU headers.
  (astropy/astropy#996)


Bug Fixes
^^^^^^^^^

- Binary tables containing compressed images may, optionally, contain other
  columns unrelated to the tile compression convention. Although this is an
  uncommon use case, it is permitted by the standard. (#159)

- Reworked some of the file I/O routines to allow simpler, more consistent
  mapping between OS-level file modes ('rb', 'wb', 'ab', etc.) and the more
  "PyFITS-specific" modes used by PyFITS like "readonly" and "update".
  That is, if reading a FITS file from an open file object, it doesn't matter
  as much what "mode" it was opened in so long as it has the right
  capabilities (read/write/etc.)  Also works around bugs in the Python io
  module in 2.6+ with regard to file modes. (spacetelescope/PyFITS#33)

- Fixed an obscure issue that can occur on systems that don't have flush to
  memory-mapped files implemented (namely GNU Hurd). (astropy/astropy#968)


3.1.3 (2013-11-26)
------------------

- Disallowed assigning NaN and Inf floating point values as header values,
  since the FITS standard does not define a way to represent them in. Because
  this is undefined, the previous behavior did not make sense and produced
  invalid FITS files. (spacetelescope/PyFITS#11)

- Added a workaround for a bug in 64-bit OSX that could cause truncation when
  writing files greater than 2^32 bytes in size. (spacetelescope/PyFITS#28)

- Fixed a long-standing issue where writing binary tables did not correctly
  write the TFORMn keywords for variable-length array columns (they ommitted
  the max array length parameter of the format).  This was thought fixed in
  v3.1.2, but it was only fixed there for compressed image HDUs and not for
  binary tables in general.

- Fixed an obscure issue that can occur on systems that don't have flush to
  memory-mapped files implemented (namely GNU Hurd). (Backported from 3.2)


3.0.12 (2013-11-26)
-------------------

- Disallowed assigning NaN and Inf floating point values as header values,
  since the FITS standard does not define a way to represent them in. Because
  this is undefined, the previous behavior did not make sense and produced
  invalid FITS files. (Backported from 3.1.3)

- Added a workaround for a bug in 64-bit OSX that could cause truncation when
  writing files greater than 2^32 bytes in size. (Backported from 3.1.3)

- Fixed a long-standing issue where writing binary tables did not correctly
  write the TFORMn keywords for variable-length array columns (they ommitted
  the max array length parameter of the format).  This was thought fixed in
  v3.1.2, but it was only fixed there for compressed image HDUs and not for
  binary tables in general. (Backported from 3.1.3)

- Fixed an obscure issue that can occur on systems that don't have flush to
  memory-mapped files implemented (namely GNU Hurd). (Backported from 3.2)


3.1.2 (2013-04-22)
------------------

- When an error occurs opening a file in fitsdiff the exception message will
  now at least mention which file had the error. (#168)

- Fixed support for opening gzipped FITS files by filename in a writeable mode
  (PyFITS has supported writing to gzip files for some time now, but only
  enabled it when GzipFile objects were passed to ``pyfits.open()`` due to
  some legacy code preventing full gzip support. (#195)

- Added a more helpful error message in the case of malformatted FITS files
  that contain non-float NULL values in an ASCII table but are missing the
  required TNULLn keywords in the header. (#197)

- Fixed an (apparently long-standing) issue where writing compressed images
  did not correctly write the TFORMn keywords for variable-length array
  columns (they ommitted the max array length parameter of the format). (#199)

- Slightly refactored how tables containing variable-length array columns are
  handled to add two improvements: Fixes an issue where accessing the data
  after a call to the `pyfits.getdata` convenience function caused an
  exception, and allows the VLA data to be read from an existing mmap of the
  FITS file. (#200)

- Fixed a bug that could occur when opening a table containing
  multi-dimensional columns (i.e. via the TDIMn keyword) and then writing it
  out to a new file. (#201)

- Added use of the console_scripts entry point to install the fitsdiff and
  fitscheck scripts, which if nothing else provides better Windows support.
  The generated scripts now override the ones explicitly defined in the
  scripts/ directory (which were just trivial stubs to begin with). (#202)

- Fixed a bug on Python 3 where attempting to open a non-existent file on
  Python 3 caused a seemingly unrelated traceback. (#203)

- Fixed a bug in fitsdiff that reported two header keywords containing NaN
  as value as different. (#204)

- Fixed an issue in the tests that caused some tests to fail if pyfits is
  installed with read-only permissions. (#208)

- Fixed a bug where instantiating a ``BinTableHDU`` from a numpy array
  containing boolean fields converted all the values to ``False``. (#215)

- Fixed an issue where passing an array of integers into the constructor of
  ``Column()`` when the column type is floats of the same byte width caused the
  column array to become garbled. (#218)

- Fixed inconsistent behavior in creating CONTINUE cards from byte strings
  versus unicode strings in Python 2--CONTINUE cards can now be created
  properly from unicode strings (so long as they are convertable to ASCII).
  (spacetelescope/PyFITS#1)

- Fixed a couple cases where creating a new table using TDIMn in some of the
  columns could caused a crash. (spacetelescope/PyFITS#3)

- Fixed a bug in parsing HIERARCH keywords that do not have a space after
  the first equals sign (before the value). (spacetelescope/PyFITS#5)

- Prevented extra leading whitespace on HIERARCH keywords from being treated
  as part of the keyword. (spacetelescope/PyFITS#6)

- Fixed a bug where HIERARCH keywords containing lower-case letters was
  mistakenly marked as invalid during header validation.
  (spacetelescope/PyFITS#7)

- Fixed an issue that was ancillary to (spacetelescope/PyFITS#7) where the
  ``Header.index()`` method did not work correctly with HIERARCH keywords
  containing lower-case letters.


3.0.11 (2013-04-17)
-------------------

- Fixed support for opening gzipped FITS files by filename in a writeable mode
  (PyFITS has supported writing to gzip files for some time now, but only
  enabled it when GzipFile objects were passed to ``pyfits.open()`` due to
  some legacy code preventing full gzip support. Backported from 3.1.2. (#195)

- Added a more helpful error message in the case of malformatted FITS files
  that contain non-float NULL values in an ASCII table but are missing the
  required TNULLn keywords in the header. Backported from 3.1.2. (#197)

- Fixed an (apparently long-standing) issue where writing compressed images did
  not correctly write the TFORMn keywords for variable-length array columns
  (they ommitted the max array length parameter of the format). Backported from
  3.1.2. (#199)

- Slightly refactored how tables containing variable-length array columns are
  handled to add two improvements: Fixes an issue where accessing the data
  after a call to the `pyfits.getdata` convenience function caused an
  exception, and allows the VLA data to be read from an existing mmap of the
  FITS file. Backported from 3.1.2. (#200)

- Fixed a bug that could occur when opening a table containing
  multi-dimensional columns (i.e. via the TDIMn keyword) and then writing it
  out to a new file. Backported from 3.1.2. (#201)

- Fixed a bug on Python 3 where attempting to open a non-existent file on
  Python 3 caused a seemingly unrelated traceback. Backported from 3.1.2.
  (#203)

- Fixed a bug in fitsdiff that reported two header keywords containing NaN
  as value as different. Backported from 3.1.2. (#204)

- Fixed an issue in the tests that caused some tests to fail if pyfits is
  installed with read-only permissions. Backported from 3.1.2. (#208)

- Fixed a bug where instantiating a ``BinTableHDU`` from a numpy array
  containing boolean fields converted all the values to ``False``. Backported
  from 3.1.2. (#215)

- Fixed an issue where passing an array of integers into the constructor of
  ``Column()`` when the column type is floats of the same byte width caused the
  column array to become garbled. Backported from 3.1.2. (#218)

- Fixed a couple cases where creating a new table using TDIMn in some of the
  columns could caused a crash. Backported from 3.1.2.
  (spacetelescope/PyFITS#3)


3.1.1 (2013-01-02)
------------------

This is a bug fix release for the 3.1.x series.

Bug Fixes
^^^^^^^^^

- Improved handling of scaled images and pseudo-unsigned integer images in
  compressed image HDUs.  They now work more transparently like normal image
  HDUs with support for the ``do_not_scale_image_data`` and ``uint`` options,
  as well as ``scale_back`` and ``save_backup``.  The ``.scale()`` method
  works better too. (#88)

- Permits non-string values for the EXTNAME keyword when reading in a file,
  rather than throwing an exception due to the malformatting.  Added
  verification for the format of the EXTNAME keyword when writing. (#96)

- Added support for EXTNAME and EXTVER in PRIMARY HDUs.  That is, if EXTNAME
  is specified in the header, it will also be reflected in the ``.name``
  attribute and in ``pyfits.info()``.  These keywords used to be verboten in
  PRIMARY HDUs, but the latest version of the FITS standard allows them.
  (#151)

- HCOMPRESS can again be used to compress data cubes (and higher-dimensional
  arrays) so long as the tile size is effectively 2-dimensional. In fact,
  PyFITS will automatically use compatible tile sizes even if they're not
  explicitly specified. (#171)

- Added support for the optional ``endcard`` parameter in the
  ``Header.fromtextfile()`` and ``Header.totextfile()`` methods.  Although
  ``endcard=False`` was a reasonable default assumption, there are still text
  dumps of FITS headers that include the END card, so this should have been
  more flexible. (#176)

- Fixed a crash when running fitsdiff on two empty (that is, zero row) tables.
  (#178)

- Fixed an issue where opening files containing random groups HDUs in update
  mode could cause an unnecessary rewrite of the file even if none of the
  data is modified. (#179)

- Fixed a bug that could caused a deadlock in the filesystem on OSX if PyFITS
  is used with Numpy 1.7 in some cases. (#180)

- Fixed a crash when generating diff reports from diffs using the
  ``ignore_comments`` options. (#181)

- Fixed some bugs with WCS Paper IV record-valued keyword cards:

  - Cards that looked kind of like RVKCs but were not intended to be were
    over-permissively treated as such--commentary keywords like COMMENT and
    HISTORY were particularly affected. (#183)

  - Looking up a card in a header by its standard FITS keyword only should
    always return the raw value of that card.  That way cards containing
    values that happen to valid RVKCs but were not intended to be will still
    be treated like normal cards. (#184)

  - Looking up a RVKC in a header with only part of the field-specifier (for
    example "DP1.AXIS" instead of "DP1.AXIS.1") was implicitly treated as a
    wildcard lookup. (#184)

- Fixed a crash when diffing two FITS files where at least one contains a
  compressed image HDU which was not recognized as an image instead of a
  table. (#187)

- Fixed bugs in the backwards compatibility layer for the ``CardList.index``
  and ``CardList.count`` methods. (#190)

- Improved ``__repr__`` and text file representation of cards with long values
  that are split into CONTINUE cards. (#193)

- Fixed a crash when trying to assign a long (> 72 character) value to blank
  ('') keywords. This also changed how blank keywords are represented--there
  are still exactly 8 spaces before any commentary content can begin; this
  *may* affect the exact display of header cards that assumed there could be
  fewer spaces in a blank keyword card before the content begins. However, the
  current approach is more in line with the requirements of the FITS standard.
  (#194)


3.0.10 (2013-01-02)
-------------------

- Improved handling of scaled images and pseudo-unsigned integer images in
  compressed image HDUs.  They now work more transparently like normal image
  HDUs with support for the ``do_not_scale_image_data`` and ``uint`` options,
  as well as ``scale_back`` and ``save_backup``.  The ``.scale()`` method
  works better too.  Backported from 3.1.1. (#88)

- Permits non-string values for the EXTNAME keyword when reading in a file,
  rather than throwing an exception due to the malformatting.  Added
  verification for the format of the EXTNAME keyword when writing.  Backported
  from 3.1.1. (#96)

- Added support for EXTNAME and EXTVER in PRIMARY HDUs.  That is, if EXTNAME
  is specified in the header, it will also be reflected in the ``.name``
  attribute and in ``pyfits.info()``.  These keywords used to be verbotten in
  PRIMARY HDUs, but the latest version of the FITS standard allows them.
  Backported from 3.1.1. (#151)

- HCOMPRESS can again be used to compress data cubes (and higher-dimensional
  arrays) so long as the tile size is effectively 2-dimensional. In fact,
  PyFITS will not automatically use compatible tile sizes even if they're not
  explicitly specified.  Backported from 3.1.1. (#171)

- Fixed a bug when writing out files containing zero-width table columns,
  where the TFIELDS keyword would be updated incorrectly, leaving the table
  largely unreadable.  Backported from 3.1.0. (#174)

- Fixed an issue where opening files containing random groups HDUs in update
  mode could cause an unnecessary rewrite of the file even if none of the
  data is modified.  Backported from 3.1.1. (#179)

- Fixed a bug that could caused a deadlock in the filesystem on OSX if PyFITS
  is used with Numpy 1.7 in some cases. Backported from 3.1.1. (#180)


3.1 (2012-08-08)
----------------

Highlights
^^^^^^^^^^

- The ``Header`` object has been significantly reworked, and ``CardList``
  objects are now deprecated (their functionality folded into the ``Header``
  class).  See API Changes below for more details.

- Memory maps are now used by default to access HDU data.  See API Changes
  below for more details.

- Now includes a new version of the ``fitsdiff`` program for comparing two
  FITS files, and a new FITS comparison API used by ``fitsdiff``.  See New
  Features below.

API Changes
^^^^^^^^^^^

- The ``Header`` class has been rewritten, and the ``CardList`` class is
  deprecated.  Most of the basic details of working with FITS headers are
  unchanged, and will not be noticed by most users.  But there are differences
  in some areas that will be of interest to advanced users, and to application
  developers.  For full details of the changes, see the "Header Interface
  Transition Guide" section in the PyFITS documentation.  See ticket #64 on
  the PyFITS Trac for futher details and background. Some highlights are
  listed below:

  * The Header class now fully implements the Python dict interface, and can
    be used interchangably with a dict, where the keys are header keywords.

  * New keywords can be added to the header using normal keyword assignment
    (previously it was necessary to use ``Header.update`` to add new
    keywords).  For example::

        >>> header['NAXIS'] = 2

    will update the existing 'FOO' keyword if it already exists, or add a new
    one if it doesn't exist, just like a dict.

  * It is possible to assign both a value and a comment at the same time using
    a tuple::

        >>> header['NAXIS'] = (2, 'Number of axes')

  * To add/update a new card and ensure it's added in a specific location, use
    ``Header.set()``::

        >>> header.set('NAXIS', 2, 'Number of axes', after='BITPIX')

    This works the same as the old ``Header.update()``.  ``Header.update()``
    still works in the old way too, but is deprecated.

  * Although ``Card`` objects still exist, it generally is not necessary to
    work with them directly.  ``Header.ascardlist()``/``Header.ascard`` are
    deprecated and should not be used.  To directly access the ``Card``
    objects in a header, use ``Header.cards``.

  * To access card comments, it is still possible to either go through the
    card itself, or through ``Header.comments``.  For example::

       >>> header.cards['NAXIS'].comment
       Number of axes
       >>> header.comments['NAXIS']
       Number of axes

  * ``Card`` objects can now be used interchangeably with
    ``(keyword, value, comment)`` 3-tuples.  They still have ``.value`` and
    ``.comment`` attributes as well.  The ``.key`` attribute has been renamed
    to ``.keyword`` for consistency, though ``.key`` is still supported (but
    deprecated).

- Memory mapping is now used by default to access HDU data.  That is,
  ``pyfits.open()`` uses ``memmap=True`` as the default.  This provides better
  performance in the majority of use cases--there are only some I/O intensive
  applications where it might not be desirable.  Enabling mmap by default also
  enabled finding and fixing a large number of bugs in PyFITS' handling of
  memory-mapped data (most of these bug fixes were backported to PyFITS
  3.0.5). (#85)

  * A new ``pyfits.USE_MEMMAP`` global variable was added.  Set
    ``pyfits.USE_MEMMAP = False`` to change the default memmap setting for
    opening files.  This is especially useful for controlling the behavior in
    applications where pyfits is deeply embedded.

  * Likewise, a new ``PYFITS_USE_MEMMAP`` environment variable is supported.
    Set ``PYFITS_USE_MEMMAP = 0`` in your environment to change the default
    behavior.

- The ``size()`` method on HDU objects is now a ``.size`` property--this
  returns the size in bytes of the data portion of the HDU, and in most cases
  is equivalent to ``hdu.data.nbytes`` (#83)

- ``BinTableHDU.tdump`` and ``BinTableHDU.tcreate`` are deprecated--use
  ``BinTableHDU.dump`` and ``BinTableHDU.load`` instead.  The new methods
  output the table data in a slightly different format from previous versions,
  which places quotes around each value.  This format is compatible with data
  dumps from previous versions of PyFITS, but not vice-versa due to a parsing
  bug in older versions.

- Likewise the ``pyfits.tdump`` and ``pyfits.tcreate`` convenience function
  versions of these methods have been renamed ``pyfits.tabledump`` and
  ``pyfits.tableload``.  The old deprecated, but currently retained for
  backwards compatibility. (r1125)

- A new global variable ``pyfits.EXTENSION_NAME_CASE_SENSITIVE`` was added.
  This serves as a replacement for ``pyfits.setExtensionNameCaseSensitive``
  which is not deprecated and may be removed in a future version.  To enable
  case-sensitivity of extension names (i.e. treat 'sci' as distict from 'SCI')
  set ``pyfits.EXTENSION_NAME_CASE_SENSITIVE = True``.  The default is
  ``False``. (r1139)

- A new global configuration variable ``pyfits.STRIP_HEADER_WHITESPACE`` was
  added.  By default, if a string value in a header contains trailing
  whitespace, that whitespace is automatically removed when the value is read.
  Now if you set ``pyfits.STRIP_HEADER_WHITESPACE = False`` all whitespace is
  preserved. (#146)

- The old ``classExtensions`` extension mechanism (which was deprecated in
  PyFITS 3.0) is removed outright.  To our knowledge it was no longer used
  anywhere. (r1309)

- Warning messages from PyFITS issued through the Python warnings API are now
  output to stderr instead of stdout, as is the default.  PyFITS no longer
  modifies the default behavior of the warnings module with respect to which
  stream it outputs to. (r1319)

- The ``checksum`` argument to ``pyfits.open()`` now accepts a value of
  'remove', which causes any existing CHECKSUM/DATASUM keywords to be ignored,
  and removed when the file is saved.

New Features
^^^^^^^^^^^^

- Added support for the proposed "FITS" extension HDU type.  See
  http://listmgr.cv.nrao.edu/pipermail/fitsbits/2002-April/001094.html.  FITS
  HDUs contain an entire FITS file embedded in their data section.  `FitsHDU`
  objects work like other HDU types in PyFITS.  Their ``.data`` attribute
  returns the raw data array.  However, they have a special ``.hdulist``
  attribute which processes the data as a FITS file and returns it as an
  in-memory HDUList object.  FitsHDU objects also support a
  ``FitsHDU.fromhdulist()`` classmethod which returns a new `FitsHDU` object
  that embeds the supplied HDUList. (#80)

- Added a new ``.is_image`` attribute on HDU objects, which is True if the HDU
  data is an 'image' as opposed to a table or something else.  Here the
  meaning of 'image' is fairly loose, and mostly just means a Primary or Image
  extension HDU, or possibly a compressed image HDU (#71)

- Added an ``HDUList.fromstring`` classmethod which can parse a FITS file
  already in memory and instantiate and ``HDUList`` object from it.  This
  could be useful for integrating PyFITS with other libraries that work on
  FITS file, such as CFITSIO.  It may also be useful in streaming
  applications.  The name is a slight misnomer, in that it actually accepts
  any Python object that implements the buffer interface, which includes
  ``bytes``, ``bytearray``, ``memoryview``, ``numpy.ndarray``, etc. (#90)

- Added a new ``pyfits.diff`` module which contains facilities for comparing
  FITS files.  One can use the ``pyfits.diff.FITSDiff`` class to compare two
  FITS files in their entirety.  There is also a ``pyfits.diff.HeaderDiff``
  class for just comparing two FITS headers, and other similar interfaces.
  See the PyFITS Documentation for more details on this interface.  The
  ``pyfits.diff`` module powers the new ``fitsdiff`` program installed with
  PyFITS.  After installing PyFITS, run ``fitsdiff --help`` for usage details.

- ``pyfits.open()`` now accepts a ``scale_back`` argument.  If set to
  ``True``, this automatically scales the data using the original BZERO and
  BSCALE parameters the file had when it was first opened, if any, as well as
  the original BITPIX.  For example, if the original BITPIX were 16, this
  would be equivalent to calling ``hdu.scale('int16', 'old')`` just before
  calling ``flush()`` or ``close()`` on the file.  This option applies to all
  HDUs in the file. (#120)

- ``pyfits.open()`` now accepts a ``save_backup`` argument.  If set to
  ``True``, this automatically saves a backup of the original file before
  flushing any changes to it (this of course only applies to update and append
  mode).  This may be especially useful when working with scaled image data.
  (#121)

Changes in Behavior
^^^^^^^^^^^^^^^^^^^

- Warnings from PyFITS are not output to stderr by default, instead of stdout
  as it has been for some time.  This is contrary to most users' expectations
  and makes it more difficult for them to separate output from PyFITS from the
  desired output for their scripts. (r1319)

Bug Fixes
^^^^^^^^^

- Fixed ``pyfits.tcreate()`` (now ``pyfits.tableload()``) to be more robust
  when encountering blank lines in a column definition file (#14)

- Fixed a fairly rare crash that could occur in the handling of CONTINUE cards
  when using Numpy 1.4 or lower (though 1.4 is the oldest version supported by
  PyFITS). (r1330)

- Fixed ``_BaseHDU.fromstring`` to actually correctly instantiate an HDU
  object from a string/buffer containing the header and data of that HDU.
  This allowed for the implementation of ``HDUList.fromstring`` described
  above. (#90)

- Fixed a rare corner case where, in some use cases, (mildly, recoverably)
  malformatted float values in headers were not properly returned as floats.
  (#137)

- Fixed a corollary to the previous bug where float values with a leading zero
  before the decimal point had the leading zero unnecessarily removed when
  saving changes to the file (eg. "0.001" would be written back as ".001" even
  if no changes were otherwise made to the file). (#137)

- When opening a file containing CHECKSUM and/or DATASUM keywords in update
  mode, the CHECKSUM/DATASUM are updated and preserved even if the file was
  opened with checksum=False.  This change in behavior prevents checksums from
  being unintentionally removed. (#148)

- Fixed a bug where ``ImageHDU.scale(option='old')`` wasn't working at all--it
  was not restoring the image to its original BSCALE and BZERO values. (#162)

- Fixed a bug when writing out files containing zero-width table columns,
  where the TFIELDS keyword would be updated incorrectly, leaving the table
  largely unreadable.  This fix will be backported to the 3.0.x series in
  version 3.0.10.  (#174)


3.0.9 (2012-08-06)
------------------

This is a bug fix release for the 3.0.x series.

Bug Fixes
^^^^^^^^^

- Fixed ``Header.values()``/``Header.itervalues()`` and ``Header.items()``/
  ``Header.iteritems()`` to correctly return the different values for
  duplicate keywords (particularly commentary keywords like HISTORY and
  COMMENT).  This makes the old Header implementation slightly more compatible
  with the new implementation in PyFITS 3.1. (#127)

  .. note::
      This fix did not change the existing behavior from earlier PyFITS
      versions where ``Header.keys()`` returns all keywords in the header with
      duplicates removed.  PyFITS 3.1 changes that behavior, so that
      ``Header.keys()`` includes duplicates.

- Fixed a bug where ``ImageHDU.scale(option='old')`` wasn't working at all--it
  was not restoring the image to its original BSCALE and BZERO values. (#162)

- Fixed a bug where opening a file containing compressed image HDUs in
  'update' mode and then immediately closing it without making any changes
  caused the file to be rewritten unncessarily. (#167)

- Fixed two memory leaks that could occur when writing compressed image data,
  or in some cases when opening files containing compressed image HDUs in
  'update' mode. (#168)


3.0.8 (2012-06-04)
------------------

Changes in Behavior
^^^^^^^^^^^^^^^^^^^

- Prior to this release, image data sections did not work with scaled
  data--that is, images with non-trivial BSCALE and/or BZERO values.
  Previously, in order to read such images in sections, it was necessary to
  manually apply the BSCALE+BZERO to each section.  It's worth noting that
  sections *did* support pseudo-unsigned ints (flakily).  This change just
  extends that support for general BSCALE+BZERO values.

Bug Fixes
^^^^^^^^^

- Fixed a bug that prevented updates to values in boolean table columns from
  being saved.  This turned out to be a symptom of a deeper problem that could
  prevent other table updates from being saved as well. (#139)

- Fixed a corner case in which a keyword comment ending with the string "END"
  could, in some circumstances, cause headers (and the rest of the file after
  that point) to be misread. (#142)

- Fixed support for scaled image data and psuedo-unsigned ints in image data
  sections (``hdu.section``).  Previously this was not supported at all.  At
  some point support was supposedly added, but it was buggy and incomplete.
  Now the feature seems to work much better. (#143)

- Fixed the documentation to point out that image data sections *do* support
  non-contiguous slices (and have for a long time).  The documentation was
  never updated to reflect this, and misinformed users that only contiguous
  slices were supported, leading to some confusion. (#144)

- Fixed a bug where creating an ``HDUList`` object containing multiple PRIMARY
  HDUs caused an infinite recursion when validating the object prior to
  writing to a file. (#145)

- Fixed a rare but serious case where saving an update to a file that
  previously had a CHECKSUM and/or DATASUM keyword, but removed the checksum
  in saving, could cause the file to be slightly corrupted and unreadable.
  (#147)

- Fixed problems with reading "non-standard" FITS files with primary headers
  containing SIMPLE = F.  PyFITS has never made many guarantees as to how such
  files are handled.  But it should at least be possible to read their
  headers, and the data if possible.  Saving changes to such a file should not
  try to prepend an unwanted valid PRIMARY HDU. (#157)

- Fixed a bug where opening an image with ``disable_image_compression = True``
  caused compression to be disabled for all subsequent ``pyfits.open()`` calls.
  (r1651)


3.0.7 (2012-04-10)
------------------

Changes in Behavior
^^^^^^^^^^^^^^^^^^^

- Slices of GroupData objects now return new GroupData objects instead of
  extended multi-row _Group objects. This is analogous to how PyFITS 3.0 fixed
  FITS_rec slicing, and should have been fixed for GroupData at the same time.
  The old behavior caused bugs where functions internal to Numpy expected that
  slicing an ndarray would return a new ndarray.  As this is a rare usecase
  with a rare feature most users are unlikely to be affected by this change.

- The previously internal _Group object for representing individual group
  records in a GroupData object are renamed Group and are now a public
  interface.  However, there's almost no good reason to create Group objects
  directly, so it shouldn't be considered a "new feature".

- An annoyance from PyFITS 3.0.6 was fixed, where the value of the EXTEND
  keyword was always being set to F if there are not actually any extension
  HDUs.  It was unnecessary to modify this value.

Bug Fixes
^^^^^^^^^

- Fixed GroupData objects to return new GroupData objects when sliced instead
  of _Group record objects.  See "Changes in behavior" above for more details.

- Fixed slicing of Group objects--previously it was not possible to slice
  slice them at all.

- Made it possible to assign `np.bool_` objects as header values. (#123)

- Fixed overly strict handling of the EXTEND keyword; see "Changes in
  behavior" above. (#124)

- Fixed many cases where an HDU's header would be marked as "modified" by
  PyFITS and rewritten, even when no changes to the header are necessary.
  (#125)

- Fixed a bug where the values of the PTYPEn keywords in a random groups HDU
  were forced to be all lower-case when saving the file. (#130)

- Removed an unnecessary inline import in `ExtensionHDU.__setattr__` that was
  causing some slowdown when opening files containing a large number of
  extensions, plus a few other small (but not insignficant) performance
  improvements thanks to Julian Taylor. (#133)

- Fixed a regression where header blocks containing invalid end-of-header
  padding (i.e. null bytes instead of spaces) couldn't be parsed by PyFITS.
  Such headers can be parsed again, but a warning is raised, as such headers
  are not valid FITS. (#136)

- Fixed a memory leak where table data in random groups HDUs weren't being
  garbage collected. (#138)


3.0.6 (2012-02-29)
------------------

Highlights
^^^^^^^^^^

The main reason for this release is to fix an issue that was introduced in
PyFITS 3.0.5 where merely opening a file containing scaled data (that is, with
non-trivial BSCALE and BZERO keywords) in 'update' mode would cause the data
to be automatically rescaled--possibly converting the data from ints to
floats--as soon as the file is closed, even if the application did not touch
the data.  Now PyFITS will only rescale the data in an extension when the data
is actually accessed by the application.  So opening a file in 'update' mode
in order to modify the header or append new extensions will not cause any
change to the data in existing extensions.

This release also fixes a few Windows-specific bugs found through more
extensive Windows testing, and other miscellaneous bugs.

Bug Fixes
^^^^^^^^^

- More accurate error messages when opening files containing invalid header
  cards. (#109)

- Fixed a possible reference cycle/memory leak that was caught through more
  extensive testing on Windows. (#112)

- Fixed 'ostream' mode to open the underlying file in 'wb' mode instead of 'w'
  mode. (#112)

- Fixed a Windows-only issue where trying to save updates to a resized FITS
  file could result in a crash due to there being open mmaps on that file.
  (#112)

- Fixed a crash when trying to create a FITS table (i.e. with new_table())
  from a Numpy array containing bool fields. (#113)

- Fixed a bug where manually initializing an ``HDUList`` with a list of of
  HDUs wouldn't set the correct EXTEND keyword value on the primary HDU.
  (#114)

- Fixed a crash that could occur when trying to deepcopy a Header in Python <
  2.7. (#115)

- Fixed an issue where merely opening a scaled image in 'update' mode would
  cause the data to be converted to floats when the file is closed. (#119)


3.0.5 (2012-01-30)
------------------

- Fixed a crash that could occur when accessing image sections of files
  opened with memmap=True. (r1211)

- Fixed the inconsistency in the behavior of files opened in 'readonly' mode
  when memmap=True vs. when memmap=False.  In the latter case, although
  changes to array data were not saved to disk, it was possible to update the
  array data in memory.  On the other hand with memmap=True, 'readonly' mode
  prevented even in-memory modification to the data.  This is what
  'copyonwrite' mode was for, but difference in behavior was confusing.  Now
  'readonly' is equivalent to 'copyonwrite' when using memmap.  If the old
  behavior of denying changes to the array data is necessary, a new
  'denywrite' mode may be used, though it is only applicable to files opened
  with memmap. (r1275)

- Fixed an issue where files opened with memmap=True would return image data
  as a raw numpy.memmap object, which can cause some unexpected
  behaviors--instead memmap object is viewed as a numpy.ndarray. (r1285)

- Fixed an issue in Python 3 where a workaround for a bug in Numpy on Python 3
  interacted badly with some other software, namely to vo.table package (and
  possibly others). (r1320, r1337, and #110)

- Fixed buggy behavior in the handling of SIGINTs (i.e. Ctrl-C keyboard
  interrupts) while flushing changes to a FITS file.  PyFITS already prevented
  SIGINTs from causing an incomplete flush, but did not clean up the signal
  handlers properly afterwards, or reraise the keyboard interrupt once the
  flush was complete. (r1321)

- Fixed a crash that could occur in Python 3 when opening files with checksum
  checking enabled. (r1336)

- Fixed a small bug that could cause a crash in the `StreamingHDU` interface
  when using Numpy below version 1.5.

- Fixed a crash that could occur when creating a new `CompImageHDU` from an
  array of big-endian data. (#104)

- Fixed a crash when opening a file with extra zero padding at the end.
  Though FITS files should not have such padding, it's not explictly forbidden
  by the format either, and PyFITS shouldn't stumble over it. (#106)

- Fixed a major slowdown in opening tables containing large columns of string
  values.  (#111)


3.0.4 (2011-11-22)
------------------

- Fixed a crash when writing HCOMPRESS compressed images that could happen on
  Python 2.5 and 2.6. (r1217)

- Fixed a crash when slicing an table in a file opened in 'readonly' mode with
  memmap=True. (r1230)

- Writing changes to a file or writing to a new file verifies the output in
  'fix' mode by default instead of 'exception'--that is, PyFITS will
  automatically fix common FITS format errors rather than raising an
  exception. (r1243)

- Fixed a bug where convenience functions such as getval() and getheader()
  crashed when specifying just 'PRIMARY' as the extension to use (r1263).

- Fixed a bug that prevented passing keyword arguments (beyond the standard
  data and header arguments) as positional arguments to the constructors of
  extension HDU classes.

- Fixed some tests that were failing on Windows--in this case the tests
  themselves failed to close some temp files and Windows refused to delete them
  while there were still open handles on them. (r1295)

- Fixed an issue with floating point formatting in header values on Python 2.5
  for Windows (and possibly other platforms).  The exponent was zero-padded to
  3 digits; although the FITS standard makes no specification on this, the
  formatting is now normalized to always pad the exponent to two digits.
  (r1295)

- Fixed a bug where long commentary cards (such as HISTORY and COMMENT) were
  broken into multiple CONTINUE cards.  However, commentary cards are not
  expected to be found in CONTINUE cards.  Instead these long cards are broken
  into multiple commentary cards. (#97)

- GZIP/ZIP-compressed FITS files can be detected and opened regardless of
  their filename extension. (#99)

- Fixed a serious bug where opening scaled images in 'update' mode and then
  closing the file without touching the data would cause the file to be
  corrupted. (#101)


3.0.3 (2011-10-05)
------------------

- Fixed several small bugs involving corner cases in record-valued keyword
  cards (#70)

- In some cases HDU creation failed if the first keyword value in the header
  was not a string value (#89)

- Fixed a crash when trying to compute the HDU checksum when the data array
  contains an odd number of bytes (#91)

- Disabled an unnecessary warning that was displayed on opening compressed
  HDUs with disable_image_compression = True (#92)

- Fixed a typo in code for handling HCOMPRESS compressed images.


3.0.2 (2011-09-23)
------------------

- The ``BinTableHDU.tcreate`` method and by extension the ``pyfits.tcreate``
  function don't get tripped up by blank lines anymore (#14)

- The presence, value, and position of the EXTEND keyword in Primary HDUs is
  verified when reading/writing a FITS file (#32)

- Improved documentation (in warning messages as well as in the handbook) that
  PyFITS uses zero-based indexing (as one would expect for C/Python code, but
  contrary to the PyFITS standard which was written with FORTRAN in mind)
  (#68)

- Fixed a bug where updating a header card comment could cause the value to be
  lost if it had not already been read from the card image string.

- Fixed a related bug where changes made directly to Card object in a header
  (i.e. assigning directly to card.value or card.comment) would not propagate
  when flushing changes to the file (#69) [Note: This and the bug above it
  were originally reported as being fixed in version 3.0.1, but the fix was
  never included in the release.]

- Improved file handling, particularly in Python 3 which had a few small file
  I/O-related bugs (#76)

- Fixed a bug where updating a FITS file would sometimes cause it to lose its
  original file permissions (#79)

- Fixed the handling of TDIMn keywords; 3.0 added support for them, but got
  the axis order backards (they were treated as though they were row-major)
  (#82)

- Fixed a crash when a FITS file containing scaled data is opened and
  immediately written to a new file without explicitly viewing the data first
  (#84)

- Fixed a bug where creating a table with columns named either 'names' or
  'formats' resulted in an infinite recursion (#86)


3.0.1 (2011-09-12)
------------------

- Fixed a bug where updating a header card comment could cause the value to be
  lost if it had not already been read from the card image string.

- Changed ``_TableBaseHDU.data`` so that if the data contain an empty table a
  ``FITS_rec`` object with zero rows is returned rather than ``None``.

- The ``.key`` attribute of ``RecordValuedKeywordCards`` now returns the full
  keyword+field-specifier value, instead of just the plain keyword (#46)

- Fixed a related bug where changes made directly to Card object in a header
  (i.e. assigning directly to card.value or card.comment) would not propagate
  when flushing changes to the file (#69)

- Fixed a bug where writing a table with zero rows could fail in some cases
  (#72)

- Miscellanous small bug fixes that were causing some tests to fail,
  particularly on Python 3 (#74, #75)

- Fixed a bug where creating a table column from an array in non-native byte
  order would not preserve the byte order, thus interpreting the column array
  using the wrong byte order (#77)


3.0.0 (2011-08-23)
--------------------

- Contains major changes, bumping the version to 3.0

- Large amounts of refactoring and reorganization of the code; tried to
  preserve public API backwards-compatibility with older versions (private API
  has many changes and is not guaranteed to be backwards-compatible).  There
  are a few small public API changes to be aware of:

  * The pyfits.rec module has been removed completely.  If your version of
    numpy does not have the numpy.core.records module it is too old to be used
    with PyFITS.

  * The ``Header.ascardlist()`` method is deprecated--use the ``.ascard``
    attribute instead.

  * ``Card`` instances have a new ``.cardimage`` attribute that should be used
    rather than ``.ascardimage()``, which may become deprecated.

  * The ``Card.fromstring()`` method is now a classmethod.  It returns a new
    ``Card`` instance rather than modifying an existing instance.

  * The ``req_cards()`` method on HDU instances has changed:  The ``pos``
    argument is not longer a string.  It is either an integer value (meaning
    the card's position must match that value) or it can be a function that
    takes the card's position as it's argument, and returns True if the
    position is valid.  Likewise, the ``test`` argument no longer takes a
    string, but instead a function that validates the card's value and returns
    True or False.

  * The ``get_coldefs()`` method of table HDUs is deprecated.  Use the
    ``.columns`` attribute instead.

  * The ``ColDefs.data`` attribute is deprecated--use ``ColDefs.columns``
    instead (though in general you shouldn't mess with it directly--it might
    become internal at some point).

  * ``FITS_record`` objects take ``start`` and ``end`` as arguments instead of
    ``startColumn`` and ``endColumn`` (these are rarely created manually, so
    it's unlikely that this change will affect anyone).

  * ``BinTableHDU.tcreate()`` is now a classmethod, and returns a new
    ``BinTableHDU`` instance.

  * Use ``ExtensionHDU`` and ``NonstandardExtHDU`` for making new extension HDU
    classes.  They are now public interfaces, wheres previously they were
    private and prefixed with underscores.

  * Possibly others--please report if you find any changes that cause
    difficulties.

- Calls to deprecated functions will display a Deprecation warning.  However,
  in Python 2.7 and up Deprecation warnings are ignored by default, so run
  Python with the `-Wd` option to see if you're using any deprecated
  functions.  If we get close to actually removing any functions, we might
  make the Deprecation warnings display by default.

- Added basic Python 3 support

- Added support for multi-dimensional columns in tables as specified by the
  TDIMn keywords (#47)

- Fixed a major memory leak that occurred when creating new tables with the
  ``new_table()`` function (#49)
  be padded with zero-bytes) vs ASCII tables (where strings are padded with
  spaces) (#15)

- Fixed a bug in which the case of Random Access Group parameters names was not
  preserved when writing (#41)

- Added support for binary table fields with zero width (#42)

- Added support for wider integer types in ASCII tables; although this is non-
  standard, some GEIS images require it (#45)

- Fixed a bug that caused the index_of() method of HDULists to crash when the
  HDUList object is created from scratch (#48)

- Fixed the behavior of string padding in binary tables (where strings should
  be padded with nulls instead of spaces)

- Fixed a rare issue that caused excessive memory usage when computing
  checksums using a non-standard block size (see r818)

- Add support for forced uint data in image sections (#53)

- Fixed an issue where variable-length array columns were not extended when
  creating a new table with more rows than the original (#54)

- Fixed tuple and list-based indexing of FITS_rec objects (#55)

- Fixed an issue where BZERO and BSCALE keywords were appended to headers in
  the wrong location (#56)

- ``FITS_record`` objects (table rows) have full slicing support, including
  stepping, etc. (#59)

- Fixed a bug where updating multiple files simultaneously (such as when
  running parallel processes) could lead to a race condition with mktemp()
  (#61)

- Fixed a bug where compressed image headers were not in the order expected by
  the funpack utility (#62)
d28e661
@jperkin jperkin referenced this issue from a commit
hiramatsu Update devel/p5-IO-All to 0.61.
Changes from previous:
---
version: 0.61
changes:
- Fix GH#44 (Thanks Shlomi Fish!)
---
version: 0.60
changes:
- Fix IO Layer situation (Thanks Mithaldu!)
---
version: 0.59
changes:
- Fix possible infinite loop in t/accept.t (Thanks C. Wallace for complaining)
  (closes #42)
- Fix yet another utf8 validation issue (Thanks Mithaldu for complaining)
  (closes #38)
- Fix warnings running t/tie.t on windows (Thanks Mithaldu for complaining)
  (closes #37)
---
version: 0.58
changes:
- Fix canonpath on MSWin32
- Fix marking files as both binary and utf8 (Thanks Mithaldu!) (closes GH#36)
---
version: 0.57
changes:
- Fix printing to a tie'd object, closes GH#26 (thanks Graham Knop for helping)
- Fix tests if $^X ne 'perl', closes GH#35 (thanks Hugemeir for the report)
---
version: 0.56
changes:
- Return realpath for canonpath when possible (closes GH#34)
- Fix regression related to chaining dirs caused by making '' not become '/'
- correctly check exists for ::File, ::Dir, and ::Link
- RT#61627/GH#29 and Fix RT#82633/GH#32, thanks Graham Knop for helping
- Some doc cleanup around the SYNOPSIS (Thanks Mithaldu)
---
version: 0.55
changes:
- Change minimum perl version to 5.8.1, and thus remove dep for IO::String
---
version: 0.54
changes:
- Remove mentions of unimplemented strict (Thanks Mithaldu, GH#15)
- Allow testing on non SDBM DBM's (thanks Jerry D. Hedden)
- Abandon RT in favor of GitHub Issues
---
version: 0.53
changes:
- Make mkdir die if it fails (thanks Martyn Pearce for RT#61697)
- Fix possible path test issues, esp in Win32 (Thanks Mithaldu)
- Fix ->binary under -utf8 import mode (thanks T. Linden for RT#81224)
- Validate UTF-8 in ->utf8 (thanks Ovid for RT#74642)
- Consistently use :encoding($encoding) (thanks Bernardo Rechea for RT#68512)
- Pass perms to mkpath in assert_dirpath (thanks Rob Kinyon for RT#53687)
- Fix minor POD niggle (thanks Greg Skyles for RT#83798)
- Remove broken test for ->mimetype (thanks Slaven Rezić for RT#91743)
- Skip t/encoding.t for perls built without PerlIO::encoding (thanks
  Jerry D. Hedden for RT#26230)
---
version: 0.52
changes:
- Add a fix for io->file("foobar")->assert (Shlomi Fish)
- Make io->file('') not break on Windows systems (Roy Ivy III)
- Fix dangling file handles in tests (Roy Ivy III)
---
version: 0.51
date:    Mon Dec 30 13:55:00 CDT 2013
changes:
- Make '' not become / when using io->dir('')
---
version: 0.50
date:    Fri Oct 18 13:08:41 PDT 2013
changes:
- Fix for rt87200
---
version: 0.49
date:    Fri Oct 18 01:05:39 CDT 2013
changes:
- Fix various tests on Windows
---
version: 0.48
date:    Tue Oct  8 01:45:39 CDT 2013
changes:
- Add ->os method to ::Filesys (Arthur Axel "fREW" Schmidt)
---
version: 0.47
date:    Mon Sep 30 18:57:52 CDT 2013
changes:
- Add ->glob method to ::Dir (Arthur Axel "fREW" Schmidt)
- Add list based constructors to ::Dir and ::File (Arthur Axel "fREW" Schmidt)
- Add ->mimetype method to ::FileSys (Arthur Axel "fREW" Schmidt)
- Add ->ext method to ::FileSys (Arthur Axel "fREW" Schmidt)
- All tests should be parallelizable (Shlomi Fish)
325000c
@jperkin jperkin referenced this issue from a commit
rodent Updated to latest release, 1.2.0. Requires LuaJIT2 and the SDL2 verio…
…ns of

the SDL packages. From ChangeLog:

Engine changes
--------------

* Upgrade to SDL 2 (#262). Thanks Vlag.
* Accelerate video operations in GPU if available. Expect huge speedups.
* Add the hq2x, hq3 and hq4x pixel filter algorithms as new video modes.
* Make the window resizable (#338).
* Use LuaJIT if available instead of vanilla Lua for better performance.
* New map entity type: custom entities, fully scripted (#323).
* Conveyor belts are now called streams and can be non-blocking (#288).
* Collision rules of streams (conveyor belts) are now like holes.
* Rewrite the main loop with a constant timestep (#351).
* Show a dialog box in case of fatal error.
* The "wide" video modes do not exist anymore. SDL2 does the job now.
* Fix enemy:on_hurt() that was wrongly called when immobilized.
* Fix life and money exceeding the max when the max changes (#355).
* Make stairs sounds optional (#364).
* Make more checks in sprite files to avoid crashes (#357).
* Fix RandomMovement speed that was not taken into account (#361).
* Set the default speed of StraightMovement to 32 instead of 0 (#343).
* The size of all map entities must be a multiple of 8 (#358).
* Thrown entities (pots, bombs...) can now fall to a lower layer (#349).
* Running into a crystal or a solid switch now activates it (#193).
* The hero can now jump over distant crystal blocks (#42).
* The shield no longer protects while using the sword or carrying (#192).
* Fix collisions detected on disabled entities (#455).
* Fix pixel collisions coordinates when sprites move (#372).
* Fix a slowness when loading maps (#374).
* Fix crash when accessing a map not active anymore (#371).
* Fix crash when changing the movement of the hero (#392).
* Fix crash when calling hero:start_treasure() with wrong parameters (#391).
* Fix crash when calling game:has/get/set_ability() with wrong name (#408).
* Fix a crash when creating two entities with the same name (#370).
* Fix issues with unobtainable treasures.
* Fix the starting location wrongly saved with special destinations (#375).
* Fix map:set_tileset() sometimes moving the hero near the map border (#400).
* Fix enemies stuck on blocks (#360).
* Fix enemies stuck on crystal blocks (#41).
* Fix human NPCs not automatically showing "walking" when moving (#336).
* Fix the hero leaving the grabbing state even while the game is suspended.
* Fix low walls in dynamic tiles behaving like normal walls.
* Fix wrong collisions of right-up and left-down diagonal jumpers.
* Fix jumpers that could be traversed sideways (#481).
* Fix blocks no longer stopping when aligned on the grid since Solarus 0.9.3.
* Fix entities not always shown when they have no optimization distance.
* Call hero:on_removed() and stop hero timers when stopping the game (#421).
* Don't die if the map or destination saved no longer exists (#301).
* Don't die if a map has no destination. Show an error and go to 0,0 instead.
* Don't die if hero:teleport() attempts to go to a non-existing place.
* Don't die if attempting to start a game without map.
* Don't die if attempting to start a non-existing dialog.

Data files format changes
-------------------------

You can use the script tools/data_files_conversion/1.1_to_1.2/update_quest.lua
to automatically update your data files.
Don't forget to make a backup first.

* Languages: New syntax of strings.dat easier to read and parse (#170).
* Maps: The world property is now optional (#128).
* Maps: Destructibles no longer have subtypes, they are customizable (#270).
* Maps: Rename entity shop_item to shop_treasure.
* Maps: Rename entity conveyor_belt to stream with new features (#288).
* Maps: Teletransporters transition property is now a string (#402).
* Maps: Walls have a new property "stops_projectiles".
* Sounds: Running into a wall now plays a sound other than "explosion" (#297).

Lua API changes
---------------

Changes that introduce incompatibilities:

* Video mode names have changed: no more wide, fullscreen ou windowed names.
* sol.video.switch_mode() no longer changes the fullscreen flag.
* surface:set_transparency_color() no longer exists. Use surface:clear().
* sol.audio.play_music("none") is replaced by sol.audio.play_music(nil).
* on_key_pressed() and on_character_pressed() are now both called (#344).
* Destructible objects no longer show hardcoded dialogs (#270).
* map:create_destructible() has no hardcoded subtypes anymore (#270).
* map:create_teletransporter(): the transition is now a string (#402).
* map:create_shop_item() is replaced by map:create_shop_treasure().
* map:create_conveyor_belt() is replaced by map:create_stream() (#288).
* The state "conveyor belt" no longer exists in hero:get_state() (#288).
* The built-in strength of the sword has changed (#426).
* Bosses are not initially disabled anymore (#448).
* Call enemy:on_hurt() before enemy:on_dying() (#325).
* enemy:on_hurt() no longer takes a life_lost parameter (#426).
* The built-in defense of the tunic has changed (#428).
* enemy:get/set_magic_damage() no longer exists (#428).
* hero:start_hurt() no longer takes a magic parameter (#428).
* hero:start_hurt() now hurts the hero even when enemies cannot.
* Enemies have now a default size of 16x16 and origin of 8,13 (#354).
* The size of enemies must be a multiple of 8 (#358).
* item:on_pickable_movement_changed replaced by pickable:on_movement_changed.
* pickable:get_treasure() now returns the item instead of the item's name.
* Timers: returning true in the callback now repeats the timer (#152).
* sol.timer.start() now always returns the timer, even if its delay is zero.

Changes that do not introduce incompatibilities:

* New Lua type and methods for custom map entities.
* New API of destructible objects, fully customizable now (#270).
* Colors now take an optional alpha value as fourth component.
* New functions sol.video.get/set/reset_window_size().
* New method surface:clear().
* Add loop and callback features to sol.audio.play_music() (#280).
* New function sol.main.get_metatable(), allows to implement shared behaviors.
* The lifetime of a menu can now be another menu.
* New method menu:is_started().
* Attempt to stop a menu already stopped is no longer an error.
* New method map:get_hero() (#362).
* map:get_world() can now return nil because the world is now optional (#128).
* map:create_wall() accepts a new property "stops_projectiles".
* Entity names are now auto-incremented to simplify their creation.
* New method entity:get_game() (#363).
* New methods entity:bring_to_front() and entity:bring_to_back() (#273).
* entity:test_obstacles() now takes an optional layer parameter.
* New methods enemy:get_attack_consequence(), get_attack_consequence_sprite().
* The event entity:on_created() is now called for all types of entities.
* New event enemy:on_hurt_by_sword() to customize the sword strength (#426).
* New event enemy:on_attacking_hero() to customize attacks (#356).
* New event enemy:on_hurting_hero() to customize hurting the hero (#428).
* New event hero:on_hurt() to customize the defense of the equipment (#428).
* hero:start_hurt() now takes an optional entity and sprite (#417).
* New methods hero:is/set_invincible() and hero:is/set_blinking() (#418).
* New methods hero:get/set_animation() to set custom animations (#155).
* New methods hero:get/set_sword_sound_id() to change the sword sound (#155).
* New methods to set custom tunic, sword and shield sprites (#155).
* New event sensor:on_left() (#339).
* New event block:on_moving() (#334).
* New functions to get/set the properties of teletransporters (#403).
* New functions to get/set the properties of blocks.
* New methods to simulate game commands, by mrunderhill (#382).
* New event sensor:on_left() (#339).
* New event block:on_moving() (#334).
* New event teletransporter:on_activated() (#312).
* New event destination:on_activated() (#312).
* movement:on_position_changed() now takes x and y parameters (#342).
* Fix movement:start() raising an error if the optional callback is nil.
* Fix random_movement:get_max_radius() that was not working.
* Check the parameter sign in game:add/remove life/money/magic (#416).
* Check the parameter sign in item:add/remove_amount.
* Fix timer:is_suspended_with_map() that was not working.
* Fix crash when calling timer:set_suspended_with_map() without game started.
* New methods timer:get/set_remaining_time.
* New function sol.main.get_elapsed_time() to get the simulated time (#424).
* New function sol.input.get_key_modifiers() to get the key modifiers state.

Solarus Quest Editor changes
----------------------------

* The editor is now built with Maven (#365).
* Multiple entities can now be resized at the same time (#405).
* Copy-pasting entities now pastes them at the cursor (#404).
* The map view can now be dragged using the middle mouse button (#413).
* Zoom in/out in the map view using the middle mouse wheel (rekcah1986).
* Add buttons to edit or refresh the tileset from the map view (#425).
* The tileset view can now be dragged using the middle mouse button (#427).
* Selecting a tile now highlights its pattern in the tileset view (#290).
* Ctrl/Shift+click even on an entity now starts a selection rectangle (#410).
* Tile patterns can now be moved in the tileset editor (#422).
* The id and name of a new resource and now asked in a single dialog (#321).
* Show the old value in the dialog to change an id/name (#468) (rekcah1986).
* The order of resources in the quest tree can now be changed (#319).
* Increase the stepsize when scrolling the map view.
* Center the dialog of editing an entity (#443).
* Add a scroller to dialogs that are too high (#437) (rekcah1986).
* Show the map or tileset name in the "do you want to save" dialog.
* Show quest name and resource ids in the tree view (thanks rekcah1986).
* Don't place new tiles below other entities if there are some (#461).
* Fix hidden entities getting selected when clicked (#460).
* Fix selecting entities losing their order when changing the layer.
* Fix NullPointerException when canceling the Open Project dialog.
* Fix freeze if tiles don't exist when changing the tileset of a map.
* Fix the tree not refreshing when deleting a resource (#335).
* Fix the tileset editor not always showing the save dialog on closing.
* Fix the num_columns property of sprites wrongly parsed.
* Fix wrong displaying of right-up and left-down diagonal jumpers.
* Switches, crystals and crystal blocks now show their actual sprite (#376).
635198b
@jperkin jperkin referenced this issue from a commit
hiramatsu Update devel/p5-IO-All to 0.61.
Changes from previous:
---
version: 0.61
changes:
- Fix GH#44 (Thanks Shlomi Fish!)
---
version: 0.60
changes:
- Fix IO Layer situation (Thanks Mithaldu!)
---
version: 0.59
changes:
- Fix possible infinite loop in t/accept.t (Thanks C. Wallace for complaining)
  (closes #42)
- Fix yet another utf8 validation issue (Thanks Mithaldu for complaining)
  (closes #38)
- Fix warnings running t/tie.t on windows (Thanks Mithaldu for complaining)
  (closes #37)
---
version: 0.58
changes:
- Fix canonpath on MSWin32
- Fix marking files as both binary and utf8 (Thanks Mithaldu!) (closes GH#36)
---
version: 0.57
changes:
- Fix printing to a tie'd object, closes GH#26 (thanks Graham Knop for helping)
- Fix tests if $^X ne 'perl', closes GH#35 (thanks Hugemeir for the report)
---
version: 0.56
changes:
- Return realpath for canonpath when possible (closes GH#34)
- Fix regression related to chaining dirs caused by making '' not become '/'
- correctly check exists for ::File, ::Dir, and ::Link
- RT#61627/GH#29 and Fix RT#82633/GH#32, thanks Graham Knop for helping
- Some doc cleanup around the SYNOPSIS (Thanks Mithaldu)
---
version: 0.55
changes:
- Change minimum perl version to 5.8.1, and thus remove dep for IO::String
---
version: 0.54
changes:
- Remove mentions of unimplemented strict (Thanks Mithaldu, GH#15)
- Allow testing on non SDBM DBM's (thanks Jerry D. Hedden)
- Abandon RT in favor of GitHub Issues
---
version: 0.53
changes:
- Make mkdir die if it fails (thanks Martyn Pearce for RT#61697)
- Fix possible path test issues, esp in Win32 (Thanks Mithaldu)
- Fix ->binary under -utf8 import mode (thanks T. Linden for RT#81224)
- Validate UTF-8 in ->utf8 (thanks Ovid for RT#74642)
- Consistently use :encoding($encoding) (thanks Bernardo Rechea for RT#68512)
- Pass perms to mkpath in assert_dirpath (thanks Rob Kinyon for RT#53687)
- Fix minor POD niggle (thanks Greg Skyles for RT#83798)
- Remove broken test for ->mimetype (thanks Slaven Rezić for RT#91743)
- Skip t/encoding.t for perls built without PerlIO::encoding (thanks
  Jerry D. Hedden for RT#26230)
---
version: 0.52
changes:
- Add a fix for io->file("foobar")->assert (Shlomi Fish)
- Make io->file('') not break on Windows systems (Roy Ivy III)
- Fix dangling file handles in tests (Roy Ivy III)
---
version: 0.51
date:    Mon Dec 30 13:55:00 CDT 2013
changes:
- Make '' not become / when using io->dir('')
---
version: 0.50
date:    Fri Oct 18 13:08:41 PDT 2013
changes:
- Fix for rt87200
---
version: 0.49
date:    Fri Oct 18 01:05:39 CDT 2013
changes:
- Fix various tests on Windows
---
version: 0.48
date:    Tue Oct  8 01:45:39 CDT 2013
changes:
- Add ->os method to ::Filesys (Arthur Axel "fREW" Schmidt)
---
version: 0.47
date:    Mon Sep 30 18:57:52 CDT 2013
changes:
- Add ->glob method to ::Dir (Arthur Axel "fREW" Schmidt)
- Add list based constructors to ::Dir and ::File (Arthur Axel "fREW" Schmidt)
- Add ->mimetype method to ::FileSys (Arthur Axel "fREW" Schmidt)
- Add ->ext method to ::FileSys (Arthur Axel "fREW" Schmidt)
- All tests should be parallelizable (Shlomi Fish)
3eceab6
@jperkin jperkin referenced this issue from a commit
rodent Updated to latest release, 1.2.0. Requires LuaJIT2 and the SDL2 verio…
…ns of

the SDL packages. From ChangeLog:

Engine changes
--------------

* Upgrade to SDL 2 (#262). Thanks Vlag.
* Accelerate video operations in GPU if available. Expect huge speedups.
* Add the hq2x, hq3 and hq4x pixel filter algorithms as new video modes.
* Make the window resizable (#338).
* Use LuaJIT if available instead of vanilla Lua for better performance.
* New map entity type: custom entities, fully scripted (#323).
* Conveyor belts are now called streams and can be non-blocking (#288).
* Collision rules of streams (conveyor belts) are now like holes.
* Rewrite the main loop with a constant timestep (#351).
* Show a dialog box in case of fatal error.
* The "wide" video modes do not exist anymore. SDL2 does the job now.
* Fix enemy:on_hurt() that was wrongly called when immobilized.
* Fix life and money exceeding the max when the max changes (#355).
* Make stairs sounds optional (#364).
* Make more checks in sprite files to avoid crashes (#357).
* Fix RandomMovement speed that was not taken into account (#361).
* Set the default speed of StraightMovement to 32 instead of 0 (#343).
* The size of all map entities must be a multiple of 8 (#358).
* Thrown entities (pots, bombs...) can now fall to a lower layer (#349).
* Running into a crystal or a solid switch now activates it (#193).
* The hero can now jump over distant crystal blocks (#42).
* The shield no longer protects while using the sword or carrying (#192).
* Fix collisions detected on disabled entities (#455).
* Fix pixel collisions coordinates when sprites move (#372).
* Fix a slowness when loading maps (#374).
* Fix crash when accessing a map not active anymore (#371).
* Fix crash when changing the movement of the hero (#392).
* Fix crash when calling hero:start_treasure() with wrong parameters (#391).
* Fix crash when calling game:has/get/set_ability() with wrong name (#408).
* Fix a crash when creating two entities with the same name (#370).
* Fix issues with unobtainable treasures.
* Fix the starting location wrongly saved with special destinations (#375).
* Fix map:set_tileset() sometimes moving the hero near the map border (#400).
* Fix enemies stuck on blocks (#360).
* Fix enemies stuck on crystal blocks (#41).
* Fix human NPCs not automatically showing "walking" when moving (#336).
* Fix the hero leaving the grabbing state even while the game is suspended.
* Fix low walls in dynamic tiles behaving like normal walls.
* Fix wrong collisions of right-up and left-down diagonal jumpers.
* Fix jumpers that could be traversed sideways (#481).
* Fix blocks no longer stopping when aligned on the grid since Solarus 0.9.3.
* Fix entities not always shown when they have no optimization distance.
* Call hero:on_removed() and stop hero timers when stopping the game (#421).
* Don't die if the map or destination saved no longer exists (#301).
* Don't die if a map has no destination. Show an error and go to 0,0 instead.
* Don't die if hero:teleport() attempts to go to a non-existing place.
* Don't die if attempting to start a game without map.
* Don't die if attempting to start a non-existing dialog.

Data files format changes
-------------------------

You can use the script tools/data_files_conversion/1.1_to_1.2/update_quest.lua
to automatically update your data files.
Don't forget to make a backup first.

* Languages: New syntax of strings.dat easier to read and parse (#170).
* Maps: The world property is now optional (#128).
* Maps: Destructibles no longer have subtypes, they are customizable (#270).
* Maps: Rename entity shop_item to shop_treasure.
* Maps: Rename entity conveyor_belt to stream with new features (#288).
* Maps: Teletransporters transition property is now a string (#402).
* Maps: Walls have a new property "stops_projectiles".
* Sounds: Running into a wall now plays a sound other than "explosion" (#297).

Lua API changes
---------------

Changes that introduce incompatibilities:

* Video mode names have changed: no more wide, fullscreen ou windowed names.
* sol.video.switch_mode() no longer changes the fullscreen flag.
* surface:set_transparency_color() no longer exists. Use surface:clear().
* sol.audio.play_music("none") is replaced by sol.audio.play_music(nil).
* on_key_pressed() and on_character_pressed() are now both called (#344).
* Destructible objects no longer show hardcoded dialogs (#270).
* map:create_destructible() has no hardcoded subtypes anymore (#270).
* map:create_teletransporter(): the transition is now a string (#402).
* map:create_shop_item() is replaced by map:create_shop_treasure().
* map:create_conveyor_belt() is replaced by map:create_stream() (#288).
* The state "conveyor belt" no longer exists in hero:get_state() (#288).
* The built-in strength of the sword has changed (#426).
* Bosses are not initially disabled anymore (#448).
* Call enemy:on_hurt() before enemy:on_dying() (#325).
* enemy:on_hurt() no longer takes a life_lost parameter (#426).
* The built-in defense of the tunic has changed (#428).
* enemy:get/set_magic_damage() no longer exists (#428).
* hero:start_hurt() no longer takes a magic parameter (#428).
* hero:start_hurt() now hurts the hero even when enemies cannot.
* Enemies have now a default size of 16x16 and origin of 8,13 (#354).
* The size of enemies must be a multiple of 8 (#358).
* item:on_pickable_movement_changed replaced by pickable:on_movement_changed.
* pickable:get_treasure() now returns the item instead of the item's name.
* Timers: returning true in the callback now repeats the timer (#152).
* sol.timer.start() now always returns the timer, even if its delay is zero.

Changes that do not introduce incompatibilities:

* New Lua type and methods for custom map entities.
* New API of destructible objects, fully customizable now (#270).
* Colors now take an optional alpha value as fourth component.
* New functions sol.video.get/set/reset_window_size().
* New method surface:clear().
* Add loop and callback features to sol.audio.play_music() (#280).
* New function sol.main.get_metatable(), allows to implement shared behaviors.
* The lifetime of a menu can now be another menu.
* New method menu:is_started().
* Attempt to stop a menu already stopped is no longer an error.
* New method map:get_hero() (#362).
* map:get_world() can now return nil because the world is now optional (#128).
* map:create_wall() accepts a new property "stops_projectiles".
* Entity names are now auto-incremented to simplify their creation.
* New method entity:get_game() (#363).
* New methods entity:bring_to_front() and entity:bring_to_back() (#273).
* entity:test_obstacles() now takes an optional layer parameter.
* New methods enemy:get_attack_consequence(), get_attack_consequence_sprite().
* The event entity:on_created() is now called for all types of entities.
* New event enemy:on_hurt_by_sword() to customize the sword strength (#426).
* New event enemy:on_attacking_hero() to customize attacks (#356).
* New event enemy:on_hurting_hero() to customize hurting the hero (#428).
* New event hero:on_hurt() to customize the defense of the equipment (#428).
* hero:start_hurt() now takes an optional entity and sprite (#417).
* New methods hero:is/set_invincible() and hero:is/set_blinking() (#418).
* New methods hero:get/set_animation() to set custom animations (#155).
* New methods hero:get/set_sword_sound_id() to change the sword sound (#155).
* New methods to set custom tunic, sword and shield sprites (#155).
* New event sensor:on_left() (#339).
* New event block:on_moving() (#334).
* New functions to get/set the properties of teletransporters (#403).
* New functions to get/set the properties of blocks.
* New methods to simulate game commands, by mrunderhill (#382).
* New event sensor:on_left() (#339).
* New event block:on_moving() (#334).
* New event teletransporter:on_activated() (#312).
* New event destination:on_activated() (#312).
* movement:on_position_changed() now takes x and y parameters (#342).
* Fix movement:start() raising an error if the optional callback is nil.
* Fix random_movement:get_max_radius() that was not working.
* Check the parameter sign in game:add/remove life/money/magic (#416).
* Check the parameter sign in item:add/remove_amount.
* Fix timer:is_suspended_with_map() that was not working.
* Fix crash when calling timer:set_suspended_with_map() without game started.
* New methods timer:get/set_remaining_time.
* New function sol.main.get_elapsed_time() to get the simulated time (#424).
* New function sol.input.get_key_modifiers() to get the key modifiers state.

Solarus Quest Editor changes
----------------------------

* The editor is now built with Maven (#365).
* Multiple entities can now be resized at the same time (#405).
* Copy-pasting entities now pastes them at the cursor (#404).
* The map view can now be dragged using the middle mouse button (#413).
* Zoom in/out in the map view using the middle mouse wheel (rekcah1986).
* Add buttons to edit or refresh the tileset from the map view (#425).
* The tileset view can now be dragged using the middle mouse button (#427).
* Selecting a tile now highlights its pattern in the tileset view (#290).
* Ctrl/Shift+click even on an entity now starts a selection rectangle (#410).
* Tile patterns can now be moved in the tileset editor (#422).
* The id and name of a new resource and now asked in a single dialog (#321).
* Show the old value in the dialog to change an id/name (#468) (rekcah1986).
* The order of resources in the quest tree can now be changed (#319).
* Increase the stepsize when scrolling the map view.
* Center the dialog of editing an entity (#443).
* Add a scroller to dialogs that are too high (#437) (rekcah1986).
* Show the map or tileset name in the "do you want to save" dialog.
* Show quest name and resource ids in the tree view (thanks rekcah1986).
* Don't place new tiles below other entities if there are some (#461).
* Fix hidden entities getting selected when clicked (#460).
* Fix selecting entities losing their order when changing the layer.
* Fix NullPointerException when canceling the Open Project dialog.
* Fix freeze if tiles don't exist when changing the tileset of a map.
* Fix the tree not refreshing when deleting a resource (#335).
* Fix the tileset editor not always showing the save dialog on closing.
* Fix the num_columns property of sprites wrongly parsed.
* Fix wrong displaying of right-up and left-down diagonal jumpers.
* Switches, crystals and crystal blocks now show their actual sprite (#376).
8d50557
@jperkin jperkin referenced this issue from a commit
rodent Version 0.6
...........

Released on 2014-09-23.

* `#39 <SimonSapin/cairocffi#39:
  Add :class:`xcb.XCBSurface`.
* `#42 <SimonSapin/cairocffi#42:
  Add :class:`Win32PrintingSurface`.
ce43d98
@jperkin jperkin referenced this issue from a commit
wiz Update to 2014.12.5:
2014.12.5
=========
----

* Feature: Update `README.md` with usage examples.
* Fix #35: Remove `py_modules` from `setup.py`.
* Fix #36: Excludes tests from being installed as a separate module.
* Fix #37: Don't hardcode the path to the installed binary.
* Fix: Readme typo in running cli.
* Feature #40: Extract cli part to ``cli`` module.
* Feature #42: Bring python version compatibility to ``compat.py`` module.
* Feature #41: Extract utility/helper methods to ``utils`` module.
* Fix #45: Does not accept standard input when running under Python 3.
* Feature: Clean up ``ChangeLog.rst`` for version and date numbers.
9290f6d
@jperkin jperkin referenced this issue from a commit
wen Update to 1.3.6
Add test target

Upstream changes:
2015-03-14 -- 1.3.6

    * Class.slots raises NotImplementedError for old style classes.
      Closes issue #67.

    * Add a new option to AstroidManager, `optimize_ast`, which
      controls if peephole optimizer should be enabled or not.
      This prevents a regression, where the visit_binop method
      wasn't called anymore with astroid 1.3.5, due to the differences
      in the resulting AST. Closes issue #82.


2015-03-11 -- 1.3.5

    * Add the ability to optimize small ast subtrees,
      with the first use in the optimization of multiple
      BinOp nodes. This removes recursivity in the rebuilder
      when dealing with a lot of small strings joined by the
      addition operator. Closes issue #59.

    * Obtain the methods for the nose brain tip through an
      unittest.TestCase instance. Closes Pylint issue #457.

    * Fix a crash which occurred when a class was the ancestor
      of itself. Closes issue #78.

    * Improve the scope_lookup method for Classes regarding qualified
      objects, with an attribute name exactly as one provided in the
      class itself.

      For example, a class containing an attribute 'first',
      which was also an import and which had, as a base, a qualified name
      or a Gettattr node, in the form 'module.first', then Pylint would
      have inferred the `first` name as the function from the Class,
      not the import. Closes Pylint issue #466.

    * Implement the assigned_stmts operation for Starred nodes,
      which was omitted when support for Python 3 was added in astroid.
      Closes issue #36.


2015-01-17 -- 1.3.4

    * Get the first element from the method list when obtaining
      the functions from nose.tools.trivial. Closes Pylint issue #448.

2015-01-16 -- 1.3.3

    * Restore file_stream to a property, but deprecate it in favour of
      the newly added method Module.stream. By using a method instead of a
      property, it will be easier to properly close the file right
      after it is used, which will ensure that no file descriptors are
      leaked. Until now, due to the fact that a module was cached,
      it was not possible to close the file_stream anywhere.
      file_stream will start emitting PendingDeprecationWarnings in
      astroid 1.4, DeprecationWarnings in astroid 1.5 and it will
      be finally removed in astroid 1.6.

    * Add inference tips for 'tuple', 'list', 'dict' and 'set' builtins.

    * Add brain definition for most string and unicode methods

    * Changed the API for Class.slots. It returns None when the class
      doesn't define any slots. Previously, for both the cases where
      the class didn't have slots defined and when it had an empty list
      of slots, Class.slots returned an empty list.

    * Add a new method to Class nodes, 'mro', for obtaining the
      the method resolution order of the class.

    * Add brain tips for six.moves. Closes issue #63.

    * Improve the detection for functions decorated with decorators
      which returns static or class methods.

    * .slots() can contain unicode strings on Python 2.

    * Add inference tips for nose.tools.


2014-11-22 -- 1.3.2

    * Fixed a crash with invalid subscript index.

    * Implement proper base class semantics for Python 3, where
      every class derives from object.

    * Allow more fine-grained control over C extension loading
      in the manager.

2014-11-21 -- 1.3.1

    * Fixed a crash issue with the pytest brain module.

2014-11-20 -- 1.3.0

    * Fix a maximum recursion error occured during the inference,
      where statements with the same name weren't filtered properly.
      Closes pylint issue #295.

    * Check that EmptyNode has an underlying object in
      EmptyNode.has_underlying_object.

    * Simplify the understanding of enum members.

    * Fix an infinite loop with decorator call chain inference,
      where the decorator returns itself. Closes issue #50.

    * Various speed improvements. Patch by Alex Munroe.

    * Add pytest brain plugin. Patch by Robbie Coomber.

    * Support for Python versions < 2.7 has been dropped, and the
      source has been made compatible with Python 2 and 3. Running
      2to3 on installation for Python 3 is not needed anymore.

    * astroid now depends on six.

    * modutils._module_file opens __init__.py in binary mode.
      Closes issues #51 and #13.

    * Only C extensions from trusted sources (the standard library)
      are loaded into the examining Python process to build an AST
      from the live module.

    * Path names on case-insensitive filesystems are now properly
      handled. This fixes the stdlib detection code on Windows.

    * Metaclass-generating functions like six.with_metaclass
      are now supported via some explicit detection code.

    * astroid.register_module_extender has been added to generalize
      the support for module extenders as used by many brain plugins.

    * brain plugins can now register hooks to handle failed imports,
      as done by the gobject-introspection plugin.

    * The modules have been moved to a separate package directory,
      `setup.py develop` now works correctly.


2014-08-24 -- 1.2.1

    * Fix a crash occurred when inferring decorator call chain.
      Closes issue #42.

    * Set the parent of vararg and kwarg nodes when inferring them.
      Closes issue #43.

    * namedtuple inference knows about '_fields' attribute.

    * enum members knows about the methods from the enum class.

    * Name inference will lookup in the parent function
      of the current scope, in case searching in the current scope
      fails.

    * Inference of the functional form of the enums takes into
      consideration the various inputs that enums accepts.

    * The inference engine handles binary operations (add, mul etc.)
      between instances.

    * Fix an infinite loop in the inference, by returning a copy
      of instance attributes, when calling 'instance_attr'.
      Closes issue #34 (patch by Emile Anclin).

    * Don't crash when trying to infer unbound object.__new__ call.
      Closes issue #11.

2014-07-25  --  1.2.0

    * Function nodes can detect decorator call chain and see if they are
      decorated with builtin descriptors (`classmethod` and `staticmethod`).

    * infer_call_result called on a subtype of the builtin type will now
      return a new `Class` rather than an `Instance`.

    * `Class.metaclass()` now handles module-level __metaclass__ declaration
      on python 2, and no longer looks at the __metaclass__ class attribute on
      python 3.

    * Function nodes can detect if they are decorated with subclasses
      of builtin descriptors when determining their type
      (`classmethod` and `staticmethod`).

    * Add `slots` method to `Class` nodes, for retrieving
      the list of valid slots it defines.

    * Expose function annotation to astroid: `Arguments` node
      exposes 'varargannotation', 'kwargannotation' and 'annotations'
      attributes, while `Function` node has the 'returns' attribute.

    * Backported most of the logilab.common.modutils module there, as
      most things there are for pylint/astroid only and we want to be
      able to fix them without requiring a new logilab.common release

    * Fix names grabed using wildcard import in "absolute import mode"
      (ie with absolute_import activated from the __future__ or with
      python 3). Fix pylint issue #58.

    * Add support in pylint-brain for understanding enum classes.

2014-04-30  --  1.1.1
    * `Class.metaclass()` looks in ancestors when the current class
      does not define explicitly a metaclass.

    * Do not cache modules if a module with the same qname is already
      known, and only return cached modules if both name and filepath
      match. Fixes pylint Bitbucket issue #136.

2014-04-18  --  1.1.0
    * All class nodes are marked as new style classes for Py3k.

    * Add a `metaclass` function to `Class` nodes to
      retrieve their metaclass.

    * Add a new YieldFrom node.

    * Add support for inferring arguments to namedtuple invocations.

    * Make sure that objects returned for namedtuple
      inference have parents.

    * Don't crash when inferring nodes from `with` clauses
      with multiple context managers. Closes #18.

    * Don't crash when a class has some __call__ method that is not
      inferable. Closes #17.

    * Unwrap instances found in `.ancestors()`, by using their _proxied
      class.
847122f
@jperkin jperkin referenced this issue from a commit
taca Update ruby-mp3info to 0.8.6.
=== 0.8.6 / 2015-03-28

* fixed frame size computation (thanks to ekaminski)
* now correctly close the @io (thanks to cyberroot)
* correctly compute length of VBR files (fixes #42)
489efd7
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.