Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

isc-dhcpd DLPI Open #45

Closed
goberle opened this issue Apr 6, 2013 · 3 comments
Closed

isc-dhcpd DLPI Open #45

goberle opened this issue Apr 6, 2013 · 3 comments

Comments

@goberle
Copy link

goberle commented Apr 6, 2013

The isc-dhcpd package get by pkgin in isc-dhcpd seem to not work in a zone.
On launch I get this error : Can't open DLPI device for net0: Is a directory.
I think it was trying to open /dev/net0 instead of /dev/net/net0.

I found a way to fix it quickly for my need:

In common/dlpi.c :
l.133 : #define DLPI_DEVDIR "/dev/"
need to be relplace by
l.133 : #define DLPI_DEVDIR "/dev/net/"

and in the dlpiopen function
l.804 : while (cp < ep)
need to be replaced by
l.804 : while (cp <= ep)

@mamash
Copy link

mamash commented Apr 7, 2013

Actually, this came up at Illumos before, and here's a better patch shown right at the top of the page:

http://echelog.com/logs/browse/illumos/1329606000

http://pastie.org/3410759

I'll integrate this into pkgsrc.

@goberle
Copy link
Author

goberle commented Apr 7, 2013

Oh great ! Thx for the patch :)

@mamash
Copy link

mamash commented May 28, 2013

I backported the patch to 2013Q1 and the isc-dhc* packages there were rebuilt (x86_64 build done, i386 build just finishing).

@mamash mamash closed this as completed May 28, 2013
jperkin pushed a commit that referenced this issue Dec 9, 2013
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 ;)
jperkin pushed a commit that referenced this issue Jan 6, 2014
Incompatible Changes:
* can no longer use both `\' and `:' (didn't work anyway)

New Features:
* Handling of run-time errors (default: die) is now overridable by
  subclasses via signature_error_handler(). [github #54]
* Can now have aliased named parameters. [github #57]
* remove dependency on Devel::BeginLift [github #39]
* can now use `when' to specify default conditions [github #48]
* can use `//=' as a shortcut for `when undef' [github #45]
* can now provide `where' constraints in addition to (or instead
  of) a type [github #7]
* can now use `...' to disable further argument checking [github #49]
* can now specify more than one alternative in type unions [github #55]
* can now nest parameterized types

Bug Fixes:
* Removed experimental smartmatch warnings
* Don't require Data::Alias for named params unless you have to [github #71]
* Fixed obscure bug where an eval in Method::Signatures wouldn't
  be skipped when carp'ing (i.e. in carp_location_for()) [github #72]
* Data::Alias is only loaded when needed avoiding a threads + eval
  bug in most cases and improving compile time performance.
  [rt.cpan.org 82922, github #62]
* Compile-time errors now reporting proper line numbers. [github #61]
* Trailing commas on parameter lists are now ok. [rt.cpan.org 81364]
* Default condition of `when {}' now interpreted as `when { $_ ~~
  {} }' (avoids parse error). [github #60]

Optimizations:
* better signature parsing using PPI [github #11]

Distribution Fixes:
* Fixed failing test in 5.10.0 (uncovered by CPAN Testers)
* Fixed repo link in metadata (thanks dsteinbrunner) [github #87]
* Add M::S::Parameter to MANIFEST [github #76]
* Change representation of Infinity to work on Win32 [github #75]
* Fixed stray detritus in MANIFEST.
* Somehow my last-minute fix to the new error handler test didn't
  make it in; this will fix "Can't locate Moose.pm" errors.
* Fixed test failing on 5.10.0 as per github #59.
* Fixed subtests failing on Test::More's prior to 0.96.

Docs:
* Updated close parend problem to include quotes and a workaround
  [rt.cpan.org 85925]
* Fixed some typos (thanks dsteinbrunner) [github #88]
* Found and fixed missing parend
* Minor clarifications here and there.
* Clarified what doesn't work in Perl 5.8.
* Added Function::Parameters to See Also section.
* Updated copyright.
* documented all new features
* new ASCI-art breakdown of signature syntax
* minor tweaks and corrections

Misc:
* Rearranged so signature is now an object [github #30]
* Add hook for Travis CI [github #78]
* Failure to parse parameters will now produce a more useful error.
jperkin pushed a commit that referenced this issue Jan 21, 2014
Incompatible Changes:
* can no longer use both `\' and `:' (didn't work anyway)

New Features:
* Handling of run-time errors (default: die) is now overridable by
  subclasses via signature_error_handler(). [github #54]
* Can now have aliased named parameters. [github #57]
* remove dependency on Devel::BeginLift [github #39]
* can now use `when' to specify default conditions [github #48]
* can use `//=' as a shortcut for `when undef' [github #45]
* can now provide `where' constraints in addition to (or instead
  of) a type [github #7]
* can now use `...' to disable further argument checking [github #49]
* can now specify more than one alternative in type unions [github #55]
* can now nest parameterized types

Bug Fixes:
* Removed experimental smartmatch warnings
* Don't require Data::Alias for named params unless you have to [github #71]
* Fixed obscure bug where an eval in Method::Signatures wouldn't
  be skipped when carp'ing (i.e. in carp_location_for()) [github #72]
* Data::Alias is only loaded when needed avoiding a threads + eval
  bug in most cases and improving compile time performance.
  [rt.cpan.org 82922, github #62]
* Compile-time errors now reporting proper line numbers. [github #61]
* Trailing commas on parameter lists are now ok. [rt.cpan.org 81364]
* Default condition of `when {}' now interpreted as `when { $_ ~~
  {} }' (avoids parse error). [github #60]

Optimizations:
* better signature parsing using PPI [github #11]

Distribution Fixes:
* Fixed failing test in 5.10.0 (uncovered by CPAN Testers)
* Fixed repo link in metadata (thanks dsteinbrunner) [github #87]
* Add M::S::Parameter to MANIFEST [github #76]
* Change representation of Infinity to work on Win32 [github #75]
* Fixed stray detritus in MANIFEST.
* Somehow my last-minute fix to the new error handler test didn't
  make it in; this will fix "Can't locate Moose.pm" errors.
* Fixed test failing on 5.10.0 as per github #59.
* Fixed subtests failing on Test::More's prior to 0.96.

Docs:
* Updated close parend problem to include quotes and a workaround
  [rt.cpan.org 85925]
* Fixed some typos (thanks dsteinbrunner) [github #88]
* Found and fixed missing parend
* Minor clarifications here and there.
* Clarified what doesn't work in Perl 5.8.
* Added Function::Parameters to See Also section.
* Updated copyright.
* documented all new features
* new ASCI-art breakdown of signature syntax
* minor tweaks and corrections

Misc:
* Rearranged so signature is now an object [github #30]
* Add hook for Travis CI [github #78]
* Failure to parse parameters will now produce a more useful error.
jperkin pushed a commit that referenced this issue Jan 21, 2014
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)
jperkin pushed a commit that referenced this issue Mar 14, 2014
Incompatible Changes:
* can no longer use both `\' and `:' (didn't work anyway)

New Features:
* Handling of run-time errors (default: die) is now overridable by
  subclasses via signature_error_handler(). [github #54]
* Can now have aliased named parameters. [github #57]
* remove dependency on Devel::BeginLift [github #39]
* can now use `when' to specify default conditions [github #48]
* can use `//=' as a shortcut for `when undef' [github #45]
* can now provide `where' constraints in addition to (or instead
  of) a type [github #7]
* can now use `...' to disable further argument checking [github #49]
* can now specify more than one alternative in type unions [github #55]
* can now nest parameterized types

Bug Fixes:
* Removed experimental smartmatch warnings
* Don't require Data::Alias for named params unless you have to [github #71]
* Fixed obscure bug where an eval in Method::Signatures wouldn't
  be skipped when carp'ing (i.e. in carp_location_for()) [github #72]
* Data::Alias is only loaded when needed avoiding a threads + eval
  bug in most cases and improving compile time performance.
  [rt.cpan.org 82922, github #62]
* Compile-time errors now reporting proper line numbers. [github #61]
* Trailing commas on parameter lists are now ok. [rt.cpan.org 81364]
* Default condition of `when {}' now interpreted as `when { $_ ~~
  {} }' (avoids parse error). [github #60]

Optimizations:
* better signature parsing using PPI [github #11]

Distribution Fixes:
* Fixed failing test in 5.10.0 (uncovered by CPAN Testers)
* Fixed repo link in metadata (thanks dsteinbrunner) [github #87]
* Add M::S::Parameter to MANIFEST [github #76]
* Change representation of Infinity to work on Win32 [github #75]
* Fixed stray detritus in MANIFEST.
* Somehow my last-minute fix to the new error handler test didn't
  make it in; this will fix "Can't locate Moose.pm" errors.
* Fixed test failing on 5.10.0 as per github #59.
* Fixed subtests failing on Test::More's prior to 0.96.

Docs:
* Updated close parend problem to include quotes and a workaround
  [rt.cpan.org 85925]
* Fixed some typos (thanks dsteinbrunner) [github #88]
* Found and fixed missing parend
* Minor clarifications here and there.
* Clarified what doesn't work in Perl 5.8.
* Added Function::Parameters to See Also section.
* Updated copyright.
* documented all new features
* new ASCI-art breakdown of signature syntax
* minor tweaks and corrections

Misc:
* Rearranged so signature is now an object [github #30]
* Add hook for Travis CI [github #78]
* Failure to parse parameters will now produce a more useful error.
jperkin pushed a commit that referenced this issue Mar 14, 2014
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)
jperkin pushed a commit that referenced this issue Apr 15, 2014
        Feature request #44: Allow override of the From: field on forensic
                reports.
        Feature request #45: Log the host portion of ignored
                Authentication-Results fields at "debug" level.
        Feature request #56: Add "RequiredHeaders" setting to enforce syntax
                checks against a message and reject those that don't comply.
        Feature request #65: Add "ForensicReportsBcc".
        Fix bug #46: Charitable tweak to a couple of log messages.
        Fix bug #55: The "SoftwareHeader" setting wasn't being set properly.
        Fix bug #58: The "smtp.mailfrom" part of an Authentication-Results
                field might contain only a domain name.
        Fix bug #60: Default AuthservID to the name provided by the MTA,
                not the local host name, which is consistent with what
                OpenDKIM does.
        Merge request #2: Validate external recipients before adding them to
                report recipient lists.
        Record all DKIM results to the history file, rather than only
                passing results.
        BUILD: Fix bug #50: Check libbsd for strlcat() and strlcpy() so we
                don't make our own when we don't need to.
        CONTRIB: Fix bug #52: Update path to draft RFC in contrib/spec.
        CONTRIB: Fix bug #59: Allow database name, userid and password to be
                specified on the command line rather than hard-coding them.
        DOCS: Fix bug #48: Add a libopendmarc use overview page.
        DOCS: Fix bug #53: Add man page for opendmarc-importstats.
        REPORTS: Fix bug #51: Check status after every phase of SMTP when
                sending reports.
        REPORTS: Fix DKIM status importing.
        LIBOPENDMARC: Fix bug #68: Fix strict/relaxed checking logic when
                a public suffix list is available.
        LIBOPENDMARC: Fixed a bug where in some instances the fetch of the
                orgainizational domain could wrongly return the from domain.
        LIBOPENDMARC: Fix call to missing function.
jperkin pushed a commit that referenced this issue Apr 15, 2014
libass (0.11.1)
 * Fix distfile generation
 * No functional changes

libass (0.11.0)
 * Add bitmap run combining/compositing
   This changes the text rendering model and increases compatibility with
   VSFilter. It may make rendering faster or slower in certain cases.
 * Add AVX/SSE2 implementations for \be and compositing
   This adds yasm as (optional) build dependency.
 * Add ass_library_version() API funcion (GC #113)
 * Add 'profile' program for benchmarks
 * Improve gaussian blur
 * Fix compilation with MSVC 2013
 * Speed up HarfBuzz shaper
 * Speed up cache
 * Notable compatibility bugfixes
   * Reset origin on \fay changes (GC #88)
   * Tons of parser fixes
   * Fix ascender/descender metrics (GH #8)
   * Fix \pbo sign and scaling
   * Don't reset wrap style on \r (GC #116, GH #45)
 * Notable bugfixes:
   * Correctly handle @font advance (GC #94)
   * Disable ligatures for non-zero \fsp
   * Make sure to release vector clip (GH #22)
jperkin pushed a commit that referenced this issue May 19, 2014
Changes:
2014-05-03  David Schweikert  <[email protected]>
  * Version 3.10
  * Fix confusing error message with -g and IPv6 addresses (#58, reported by
  * Axel Beckert)
  * Allow option '-f' also for non-root (since setuid privileges are
  * dropped)
  * Do not retry twice DNS lookup on DNS lookup problem
  * Remove support for NIS groups
  * Better document -B backoff-factor and when it can be used (#33, Oleksiy
  * Zagorskyi)
  * More tests added

2014-03-08  David Schweikert  <[email protected]>
  * Version 3.9
  * Fix random output on socket error (reported by Aleksandrs Saveljevs,
  * #56)
  * Support ppc64le architecture by including alpha libtool version
    (reported by Amit Kumar Gupta and Aravinda B Thunug)
  * Fix compilation problem on FreeBSD (#57)
  * Initial test suite and continous intergration (with travis-ci.org /
  * coveralls.io)
  * Don't output usage information on error

2013-11-08  David Schweikert  <[email protected]>
  * Version 3.8
  * Fix segmentation fault introduced in version 3.7 with loop mode
  * (reported
    by Vlad Glagolev, #55)

2013-11-04  David Schweikert  <[email protected]>
  * Version 3.7
  * Allow running as non-root on Mac OS X by using non-privileged ICMP (#7)
  * Remove unnecessary IPv6 socket options
  * Fix again compatibility issue with FreeBSD (Shawn Chu)
  * Fix fping hanging forever on permanent sendto failure (Shawn Chu)
  * Fix duplicate echo reply packets causing early stop in count mode
    (reported by Ramon Schwammberger, #53)

2013-10-10  David Schweikert  <[email protected]>
  * Version 3.6
  * Fix loop issue after 65536 pings (reported by Peter Folk and GBert, #12)
  * Minimum ping data size is now 0
  * Removed setsockopt IPV6_CHECKSUM, which shouldn't be set and breaks
    compiling on Solaris (reported by Juergen Arndt)
  * Fix wrong min RTT value with -Q option (reported by Alexander Ivanov,
  * #51)

2013-05-22  David Schweikert  <[email protected]>
  * Version 3.5
  * Fix sprint_tm buffer size crash (reported by Japheth Cleaver)
  * Addded -D flag to print timestamps (Toke Høiland-Jørgensen)
  * Fix fping6 build on OS X 10.8 (unknown contributor)
  * Fix compatibility issue with FreeBSD (Alexandre Raynaud, Jason Harris,
  * #39)
  * Fping.spec: fix setuid permissions and provides fping6 (Marcus Vinicius
  * Ferreira)
  * Re-create configure script with autoconf 2.69 for aarch64 support (Chuck
  * Anderson, #45)

2012-09-04  David Schweikert  <[email protected]>
  * Version 3.4
  * Revert "Output statistics to stdout instead of stderr", because it
  * breaks
    tools assuming the output goes to stderr

2012-08-19  David Schweikert  <[email protected]>
  * Version 3.3
  * Do not output icmp errors with -q (#1)
  * Add --enable-ipv4 and --enable-ipv6 options to configure (Niclas
  * Zeising)
  * Fix removing of unreachable hosts when doing loop (Thomas Liske, #13
  * #23)
  * Fix -A for fping6 (reported by Matt LaPlante, #14)
  * Fix "options inet6" breaking IPv4 name resolution (reported by Matt
  * LaPlante, #17)
  * Output statistics to stdout instead of stderr (suggested by Simon
  * Leinen, #9)
  * Set default data size to 56 bytes on all architectures (#18)
  * Added contrib/fping.spec (Stephen Schaefer, #24)
  * Convert man-page source to POD for easier maintenance
  * Fix error message on DNS error for IPv6 hosts (#27)
  * Fix -n flag in fping6 (#28)
  * Man-page fix: TOS option typo (Thomas Liske, #23)
  * Man-page fix: inconsistency in regards to numeric arguments (Robert
  * Henney)
  * Man-page fix: better description of option -q (#15)

2012-05-29  David Schweikert  <[email protected]>
  * Version 3.2
  * Improve documentation for -g option (G.W. Haywood)
  * Performance optimization for big select timeouts (#10, Andrey
  * Bondarenko)
  * Fix restart of select call after interrupt signal (#8, Boian Bonev)
  * Fix infinite loop caused by linked list corruption (#11, Boian Bonev)

2012-04-26  David Schweikert  <[email protected]>
  * Version 3.1
  * -g option (generate): exclude network and broadcast address for cidr
    ranges (idea by Eric Brander)
  * do not explicitely check if running as root, to make it possible to
    install fping with linux capabilities instead of making it setuid
    (setcap cap_net_raw+ep fping)
  * ANSI C (C89) compiler now a requirement
  * Portability fixes
  * Reorganized source directory
  * Bugfix: fix timeout issue on Solaris (Sandor Geller)
  * Man-page fixes (Axel Beckert)
  * Added -H option to specify number of hops (Paul Duda)
  * Output usage information to stdout when called with -h (Paul Duda)

2011-12-28  David Schweikert  <[email protected]>
  * Version 3.0
  * rewritten main loop for improved performance
  * -T parameter (select timeout) now obsolete
  * Maintenance taken over from unresponsive previous maintainer
    (anybody please step up, if you disagree)
  * New homepage: www.fping.org

2009-12-21  Tobi Oetiker  <[email protected]>
  * Version v2.4b2-to3-ipv6
  * added -On option to set the TOS octet
  * Removed unused variables from code
  * updated to current autoconf standards
  * Merged Debian changes (see below)

----------------------------------------------------------------------

fping (2.4b2-to-ipv6-16.1) unstable; urgency=low

  * NMU during Moenchengladbach BSP
  * Fixes FTBFS on kfreebsd (Closes: #555398)
  * Fixes typo "Paramter" in binary

 -- Axel Beckert <[email protected]>  Sat, 23 Jan 2010 16:22:02 +0100

fping (2.4b2-to-ipv6-16) unstable; urgency=low

  * Fix the following bugs
    - Network byte order sensitivity was missing completely.
      Added hopefully all missing calls.
    - The sequence numbering scheme used led to packet drops.
      Changed it to a more senseful numbering scheme.
    - Some minor C programming mistakes ('=' instead of '==').
    Patch by Stephan Fuhrmann; closes: #502569
  * Add support for command line select timeout setting
    Patch by Marton Balint; closes: #502575
  * Remove symlinks in /usr/sbin; closes: #377732
  * Standards-Version is 3.8.0

 -- Anibal Monsalve Salazar <[email protected]>  Sat, 18 Oct 2008 12:04:52
 -- +1100

fping (2.4b2-to-ipv6-15) unstable; urgency=low

  * Added interface binding (-I) for fping
    Patch by Peter Naulls <[email protected]>
    Closes: #439014
  * Fixed a couple of typos in fping.8. Closes: #423180
  * Added homepage control header
  * Bumped Standards-Version to 3.7.3
  * Fixed the following lintian issue:
    - debian-rules-sets-DH_COMPAT

 -- Anibal Monsalve Salazar <[email protected]>  Mon, 03 Mar 2008 17:46:17
 -- +1100

fping (2.4b2-to-ipv6-13) unstable; urgency=low

  * Fixed stdout flush problem, closes: #340146.
    Patch by Bart Martens <[email protected]>.

 -- Anibal Monsalve Salazar <[email protected]>  Fri, 30 Dec 2005 08:30:09
 -- +1100

fping (2.4b2-to-ipv6-12) unstable; urgency=low

  * Fixed "problem with option -r (retry limit)", closes: #318402.
    Patch by Qingning Huo <[email protected]>.

 -- Anibal Monsalve Salazar <[email protected]>  Sat, 08 Oct 2005 21:26:35
 -- +1000

fping (2.4b2-to-ipv6-11) unstable; urgency=low

  * Fixed "would be useful to specify 'source address' like ping for multi
    homed machines", closes: #198486.
    Patch by Marc Haber <[email protected]>.

 -- Anibal Monsalve Salazar <[email protected]>  Thu, 02 Jun 2005 08:14:54
 -- +1000

fping (2.4b2-to-ipv6-10) unstable; urgency=low

  * Fixed "unnecessary delay with the -c option after the last packet"
    (Closes: #293856). Patch by Niko Tyni <[email protected]>

 -- Anibal Monsalve Salazar <[email protected]>  Sun, 06 Feb 2005 23:25:57
 -- +1100

fping (2.4b2-to-ipv6-9) unstable; urgency=low

  * Fixed "fping6 always does reverse lookup" (Closes: #273647).
    Patch by Jeroen Massar and forwarded by Bernhard Schmidt
<[email protected]>

 -- Anibal Monsalve Salazar <[email protected]>  Mon, 10 Jan 2005
 -- 00:01:32 +1100

fping (2.4b2-to-ipv6-7) unstable; urgency=low

  * Build fping in build/ipv[46] instead of build and build-ipv6.
  * Made DNS errors non-fatal for IPv6 (closes: #198056).

 -- Herbert Xu <[email protected]>  Fri, 20 Jun 2003 21:36:30 +1000

fping (2.4b2-to-ipv6-6) unstable; urgency=low

  * Do not use incorrect linux.h file (closes: #85468).

 -- Herbert Xu <[email protected]>  Sat, 17 May 2003 14:13:11 +1000

fping (2.4b2-to-ipv6-5) unstable; urgency=low

  * Fixed yet another divide by zero bug (closes: #148445).

 -- Herbert Xu <[email protected]>  Tue,  4 Jun 2002 12:18:03 +1000

fping (2.4b2-to-ipv6-4) unstable; urgency=low

  * Made fping6 setuid (closes: #136386).
  * Moved fping back into bin.
  * Partially applied IPv6 patch to fix IPv6 checksums (closes: #136479).

 -- Herbert Xu <[email protected]>  Sun,  7 Apr 2002 20:36:56 +1000

fping (2.4b2-to-ipv6-3) unstable; urgency=low

  * Added compatibility symlink for fping (closes: #135203).

 -- Herbert Xu <[email protected]>  Sat, 23 Feb 2002 08:34:11 +1100

fping (2.4b2-to-ipv6-2) unstable; urgency=low

  * Fixed another divide by zero error (closes: #132370).

 -- Herbert Xu <[email protected]>  Thu,  7 Feb 2002 20:10:48 +1100

fping (2.4b2-to-ipv6-1) unstable; urgency=low

  * New upstream release.
  * Install fping into sbin as done by upstream.
jperkin pushed a commit that referenced this issue Jun 2, 2014
Changes:
2014-05-03  David Schweikert  <[email protected]>
  * Version 3.10
  * Fix confusing error message with -g and IPv6 addresses (#58, reported by
  * Axel Beckert)
  * Allow option '-f' also for non-root (since setuid privileges are
  * dropped)
  * Do not retry twice DNS lookup on DNS lookup problem
  * Remove support for NIS groups
  * Better document -B backoff-factor and when it can be used (#33, Oleksiy
  * Zagorskyi)
  * More tests added

2014-03-08  David Schweikert  <[email protected]>
  * Version 3.9
  * Fix random output on socket error (reported by Aleksandrs Saveljevs,
  * #56)
  * Support ppc64le architecture by including alpha libtool version
    (reported by Amit Kumar Gupta and Aravinda B Thunug)
  * Fix compilation problem on FreeBSD (#57)
  * Initial test suite and continous intergration (with travis-ci.org /
  * coveralls.io)
  * Don't output usage information on error

2013-11-08  David Schweikert  <[email protected]>
  * Version 3.8
  * Fix segmentation fault introduced in version 3.7 with loop mode
  * (reported
    by Vlad Glagolev, #55)

2013-11-04  David Schweikert  <[email protected]>
  * Version 3.7
  * Allow running as non-root on Mac OS X by using non-privileged ICMP (#7)
  * Remove unnecessary IPv6 socket options
  * Fix again compatibility issue with FreeBSD (Shawn Chu)
  * Fix fping hanging forever on permanent sendto failure (Shawn Chu)
  * Fix duplicate echo reply packets causing early stop in count mode
    (reported by Ramon Schwammberger, #53)

2013-10-10  David Schweikert  <[email protected]>
  * Version 3.6
  * Fix loop issue after 65536 pings (reported by Peter Folk and GBert, #12)
  * Minimum ping data size is now 0
  * Removed setsockopt IPV6_CHECKSUM, which shouldn't be set and breaks
    compiling on Solaris (reported by Juergen Arndt)
  * Fix wrong min RTT value with -Q option (reported by Alexander Ivanov,
  * #51)

2013-05-22  David Schweikert  <[email protected]>
  * Version 3.5
  * Fix sprint_tm buffer size crash (reported by Japheth Cleaver)
  * Addded -D flag to print timestamps (Toke Høiland-Jørgensen)
  * Fix fping6 build on OS X 10.8 (unknown contributor)
  * Fix compatibility issue with FreeBSD (Alexandre Raynaud, Jason Harris,
  * #39)
  * Fping.spec: fix setuid permissions and provides fping6 (Marcus Vinicius
  * Ferreira)
  * Re-create configure script with autoconf 2.69 for aarch64 support (Chuck
  * Anderson, #45)

2012-09-04  David Schweikert  <[email protected]>
  * Version 3.4
  * Revert "Output statistics to stdout instead of stderr", because it
  * breaks
    tools assuming the output goes to stderr

2012-08-19  David Schweikert  <[email protected]>
  * Version 3.3
  * Do not output icmp errors with -q (#1)
  * Add --enable-ipv4 and --enable-ipv6 options to configure (Niclas
  * Zeising)
  * Fix removing of unreachable hosts when doing loop (Thomas Liske, #13
  * #23)
  * Fix -A for fping6 (reported by Matt LaPlante, #14)
  * Fix "options inet6" breaking IPv4 name resolution (reported by Matt
  * LaPlante, #17)
  * Output statistics to stdout instead of stderr (suggested by Simon
  * Leinen, #9)
  * Set default data size to 56 bytes on all architectures (#18)
  * Added contrib/fping.spec (Stephen Schaefer, #24)
  * Convert man-page source to POD for easier maintenance
  * Fix error message on DNS error for IPv6 hosts (#27)
  * Fix -n flag in fping6 (#28)
  * Man-page fix: TOS option typo (Thomas Liske, #23)
  * Man-page fix: inconsistency in regards to numeric arguments (Robert
  * Henney)
  * Man-page fix: better description of option -q (#15)

2012-05-29  David Schweikert  <[email protected]>
  * Version 3.2
  * Improve documentation for -g option (G.W. Haywood)
  * Performance optimization for big select timeouts (#10, Andrey
  * Bondarenko)
  * Fix restart of select call after interrupt signal (#8, Boian Bonev)
  * Fix infinite loop caused by linked list corruption (#11, Boian Bonev)

2012-04-26  David Schweikert  <[email protected]>
  * Version 3.1
  * -g option (generate): exclude network and broadcast address for cidr
    ranges (idea by Eric Brander)
  * do not explicitely check if running as root, to make it possible to
    install fping with linux capabilities instead of making it setuid
    (setcap cap_net_raw+ep fping)
  * ANSI C (C89) compiler now a requirement
  * Portability fixes
  * Reorganized source directory
  * Bugfix: fix timeout issue on Solaris (Sandor Geller)
  * Man-page fixes (Axel Beckert)
  * Added -H option to specify number of hops (Paul Duda)
  * Output usage information to stdout when called with -h (Paul Duda)

2011-12-28  David Schweikert  <[email protected]>
  * Version 3.0
  * rewritten main loop for improved performance
  * -T parameter (select timeout) now obsolete
  * Maintenance taken over from unresponsive previous maintainer
    (anybody please step up, if you disagree)
  * New homepage: www.fping.org

2009-12-21  Tobi Oetiker  <[email protected]>
  * Version v2.4b2-to3-ipv6
  * added -On option to set the TOS octet
  * Removed unused variables from code
  * updated to current autoconf standards
  * Merged Debian changes (see below)

----------------------------------------------------------------------

fping (2.4b2-to-ipv6-16.1) unstable; urgency=low

  * NMU during Moenchengladbach BSP
  * Fixes FTBFS on kfreebsd (Closes: #555398)
  * Fixes typo "Paramter" in binary

 -- Axel Beckert <[email protected]>  Sat, 23 Jan 2010 16:22:02 +0100

fping (2.4b2-to-ipv6-16) unstable; urgency=low

  * Fix the following bugs
    - Network byte order sensitivity was missing completely.
      Added hopefully all missing calls.
    - The sequence numbering scheme used led to packet drops.
      Changed it to a more senseful numbering scheme.
    - Some minor C programming mistakes ('=' instead of '==').
    Patch by Stephan Fuhrmann; closes: #502569
  * Add support for command line select timeout setting
    Patch by Marton Balint; closes: #502575
  * Remove symlinks in /usr/sbin; closes: #377732
  * Standards-Version is 3.8.0

 -- Anibal Monsalve Salazar <[email protected]>  Sat, 18 Oct 2008 12:04:52
 -- +1100

fping (2.4b2-to-ipv6-15) unstable; urgency=low

  * Added interface binding (-I) for fping
    Patch by Peter Naulls <[email protected]>
    Closes: #439014
  * Fixed a couple of typos in fping.8. Closes: #423180
  * Added homepage control header
  * Bumped Standards-Version to 3.7.3
  * Fixed the following lintian issue:
    - debian-rules-sets-DH_COMPAT

 -- Anibal Monsalve Salazar <[email protected]>  Mon, 03 Mar 2008 17:46:17
 -- +1100

fping (2.4b2-to-ipv6-13) unstable; urgency=low

  * Fixed stdout flush problem, closes: #340146.
    Patch by Bart Martens <[email protected]>.

 -- Anibal Monsalve Salazar <[email protected]>  Fri, 30 Dec 2005 08:30:09
 -- +1100

fping (2.4b2-to-ipv6-12) unstable; urgency=low

  * Fixed "problem with option -r (retry limit)", closes: #318402.
    Patch by Qingning Huo <[email protected]>.

 -- Anibal Monsalve Salazar <[email protected]>  Sat, 08 Oct 2005 21:26:35
 -- +1000

fping (2.4b2-to-ipv6-11) unstable; urgency=low

  * Fixed "would be useful to specify 'source address' like ping for multi
    homed machines", closes: #198486.
    Patch by Marc Haber <[email protected]>.

 -- Anibal Monsalve Salazar <[email protected]>  Thu, 02 Jun 2005 08:14:54
 -- +1000

fping (2.4b2-to-ipv6-10) unstable; urgency=low

  * Fixed "unnecessary delay with the -c option after the last packet"
    (Closes: #293856). Patch by Niko Tyni <[email protected]>

 -- Anibal Monsalve Salazar <[email protected]>  Sun, 06 Feb 2005 23:25:57
 -- +1100

fping (2.4b2-to-ipv6-9) unstable; urgency=low

  * Fixed "fping6 always does reverse lookup" (Closes: #273647).
    Patch by Jeroen Massar and forwarded by Bernhard Schmidt
<[email protected]>

 -- Anibal Monsalve Salazar <[email protected]>  Mon, 10 Jan 2005
 -- 00:01:32 +1100

fping (2.4b2-to-ipv6-7) unstable; urgency=low

  * Build fping in build/ipv[46] instead of build and build-ipv6.
  * Made DNS errors non-fatal for IPv6 (closes: #198056).

 -- Herbert Xu <[email protected]>  Fri, 20 Jun 2003 21:36:30 +1000

fping (2.4b2-to-ipv6-6) unstable; urgency=low

  * Do not use incorrect linux.h file (closes: #85468).

 -- Herbert Xu <[email protected]>  Sat, 17 May 2003 14:13:11 +1000

fping (2.4b2-to-ipv6-5) unstable; urgency=low

  * Fixed yet another divide by zero bug (closes: #148445).

 -- Herbert Xu <[email protected]>  Tue,  4 Jun 2002 12:18:03 +1000

fping (2.4b2-to-ipv6-4) unstable; urgency=low

  * Made fping6 setuid (closes: #136386).
  * Moved fping back into bin.
  * Partially applied IPv6 patch to fix IPv6 checksums (closes: #136479).

 -- Herbert Xu <[email protected]>  Sun,  7 Apr 2002 20:36:56 +1000

fping (2.4b2-to-ipv6-3) unstable; urgency=low

  * Added compatibility symlink for fping (closes: #135203).

 -- Herbert Xu <[email protected]>  Sat, 23 Feb 2002 08:34:11 +1100

fping (2.4b2-to-ipv6-2) unstable; urgency=low

  * Fixed another divide by zero error (closes: #132370).

 -- Herbert Xu <[email protected]>  Thu,  7 Feb 2002 20:10:48 +1100

fping (2.4b2-to-ipv6-1) unstable; urgency=low

  * New upstream release.
  * Install fping into sbin as done by upstream.
jperkin pushed a commit that referenced this issue Aug 12, 2014
What's New in libchewing 0.4.0 (Apr 11, 2014)
---------------------------------------------------------
* Add the following APIs:
  - Userphrase manipulation
    - chewing_userphrase_enumerate
    - chewing_userphrase_has_next
    - chewing_userphrase_get
    - chewing_userphrase_add
    - chewing_userphrase_remove
    - chewing_userphrase_lookup
  - Keyboardless action
    - chewing_cand_open
    - chewing_cand_close
    - chewing_cand_string_by_index_static
    - chewing_cand_choose_by_index
    - chewing_cand_list_first
    - chewing_cand_list_last
    - chewing_cand_list_has_next
    - chewing_cand_list_has_prev
    - chewing_cand_list_next
    - chewing_cand_list_prev
    - chewing_commit_preedit_buf
    - chewing_clean_preedit_buf
    - chewing_clean_bopomofo_buf
  - Bopomofo buffer
    - chewing_bopomofo_Check
    - chewing_bopomofo_String_static
  - Static API
    - chewing_aux_String_static
    - chewing_buffer_String_static
    - chewing_cand_String_static
    - chewing_commit_String_static
    - chewing_kbtype_String_static
  - Misc
    - chewing_new2
* Dictionary format:
  - Remove text data support
  - Introduce platform independent binary data representation
  - Move binary data to share/libchewing/*
* Userphrase format:
  - Support SQLite-based user phrase storage and manipulation
* New coding style:
  - Use scripts/indent.sh to change coding style
* Bug fixed:
  - Fix chewing_zuin_Check wrong return value #62
  - Fix numlock key cannot output number #45
  - Fix negative frequency problem #75
  - Fix cannot select candidate when symbol exists #79
  - Avoid clearing the buffer when Up arrow key is pressed and escCleanAllBuf is 1.
  - Fix cannot handle numlock 9 correctly #88
  - Fix invalid characters are committed when pre-edit buffer is full
  - Fix AutoLearnPhrase cannot fill correct wordSeq #108
  - Fix wrong auto learn when symbol in between #112
  - Fix missing rpl_malloc for cross compilation #118
  - Fix '\n' appear in symbol table #126
  - Reopen candidate list for symbols with down key #127 #135
  - Let up key close candidate list of symbols #131 #138
* Misc:
  - Add `make check' in cmake build
  - Change MAX_UTF8_SIZE to 4
  - Update official website URL
  - Use CreateFileA() instead of CreateFile() to stick with the ANSI API
  - Do not check phrase longer than MAX_PHRASE_LEN
  - Implement dynamic programming phrasing algorithm #73
  - Clean bopomofo buffer when mode change to English mode #89 #97
  - Update README to GFM.
  - Replace 'INCLUDE' with 'AM_CPPFLAGS' #68 #114 #116
  - Use [Shift]+[-] to input EM DASH (u+2014) as default #113 #124
  - Use Backspace to close candidate window #128
  - Use PgUp/PgDn to turn pages of candidates #129
  - Update Windows default search path #78
  - The word "zuin", "Zhuyin" are obsolete terms for "Bopomofo"
  - Add const whenever possible in several APIs
  - Toggle shape mode with shift-space #141 #142
* Successful stories:
  - chewing-windows-tsf project provides Text Services Framework
    support for Microsoft Windows.
jperkin pushed a commit that referenced this issue Aug 12, 2014
2014-07-02 version 0.5.9:

  * Support std::tr1 unordered containers by default (#51, #63, #68, #69)
  * Remove some warnings (#56)
  * Fix segmentation fault after malloc failures (#58, #59)
  * Fix alloc/dealloc mismatch (#52, #61)
  * Fix sample codes (#60, #64)
  * Support implicit conversion from integer to float/double (#54)
  * Improve documents (#45, #75, #82, #83)
  * Support CMake (#20, #87)
  * Remove Ruby dependencies in bootstrap (#86, #87)
  * Add FILE* buffer (#40)
  * Other bug fixes and refactoring: #39, #73, #77, #79, #80, #81, #84, #90
jperkin pushed a commit that referenced this issue Sep 19, 2014
1.8.0
-----

- Issue #90: Add six.moves.shlex_quote.

- Issue #59: Add six.moves.intern.

- Add six.urllib.parse.uses_(fragment|netloc|params|query|relative).

- Issue #88: Fix add_metaclass when the class has __slots__ containing
  "__weakref__" or "__dict__".

- Issue #89: Make six use absolute imports.

- Issue #85: Always accept *updated* and *assigned* arguments for wraps().

- Issue #86: In reraise(), instantiate the exception if the second argument is
  None.

- Pull request #45: Add six.moves.email_mime_nonmultipart.

- Issue #81: Add six.urllib.request.splittag mapping.

- Issue #80: Add six.urllib.request.splituser mapping.
jperkin pushed a commit that referenced this issue Dec 9, 2014
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.
jperkin pushed a commit that referenced this issue Jun 1, 2015
Upstream changes:
version 3.27 (2015-05-05)

  [ENHANCEMENTS]

  * Cisco Aironet PSU information
  * Only log adding mibdirs at debug level 2

  [BUG FIXES]

  * [#221] Drop Cisco Voice VLAN 4096

version 3.26 (2015-03-07)

  [ENHANCEMENTS]

  * Add fan and psu reporting to Layer3::Dell
  * Include Voice VLANs in (tagged) VLAN Membership on Cisco devices

  [BUG FIXES]

  * Fix typo in MRO::print_superclasses

version 3.25 (2015-02-25)

  [ENHANCEMENTS]

    * Add new model name mappings for to Layer2::HP

version 3.24 (2015-02-04)

   [ENHANCEMENTS]

    * Support RSTP and ieee8021d STP operating modes in RapidCity

   [BUG FIXES]

    * Fix single instance leafs defined in %FUNCS to behave like table leafs
    * Fix incorrect FDB ID to VLAN ID mapping in Bridge and L3:Enterasys

version 3.23 (2014-12-09)

   [ENHANCEMENTS]

    * Update MIB used in L1::Asante
    * Enhanced STP support for L3::Extreme

   [BUG FIXES]

    * Fix Cisco VLAN membership issue introduced in 3.22 related to capturing
      port VLANs on Cisco interfaces which are configured for trunking but
      are not in operational trunking mode

version 3.22 (2014-12-02)

   [NEW FEATURES]

    * Support obtaining FDB in Avaya SPBM edge deployments in L2::Baystack
      NOTE: This requires a RAPID-CITY MIB with the rcBridgeSpbmMacTable
    * Support for Fortinet devices in new class L3::Fortinet

   [ENHANCEMENTS]

    * Include LLDP support in base Layer2 and Layer3 classes. Due to the
      widespread adoption of LLDP, this should improve mapping networks
      when devices aren't supported in a more specific class.
    * No longer ignore interfaces based on name, in base L2/L3/L7 device
      classes. For several device classes SNMP::Info will now return tunnel
      interfaces and/or loopbacks, if present.
    * Use dot1qVlanCurrentTable if available to capture dynamic and static
      VLANs, fall back to dot1qVlanStaticTable if not available.
    * New method i_vlan_membership_untagged() for VLANs transmitted as
      untagged frames.
    * Capture Aruba AP hardware and software version when available
    * New STP methods to support gathering information from devices running
      mutiple STP instances such as PVST and MST
    * Enhanced STP support for Avaya and Foundry classes

   [BUG FIXES]

    * [#64] Misdetection: Wireless APs, add products MIB to L2::3Com
    * Use FDB ID to VID mapping if available to determine end station VLAN
      rather than assuming they are the same.
    * Capture port VLANs on Cisco interfaces which are configured for
      trunking but are not in operational trunking mode
    * Correct munging of stp_p_port(), i_stp_port(), and stp_root() methods
      in Bridge
    * In LLDP.pm don't create a variable in a conditional

version 3.20 (2014-09-08)

   [NEW FEATURES]

    * Override layers in Juniper for routers with switch modules

   [BUG FIXES]

    * Update MANIFEST to include Ubiquiti files

version 3.19 (2014-08-01)

   [NEW FEATURES]

    * Support for Ubiquiti Access Points in new class L2::Ubiquiti (begemot)
    * Preliminary support for 3Com switches in new class L2::3Com (begemot)

   [BUG FIXES]

    * Fix Avaya detection lldp_port()
    * Silence uninitialized value warning in L3::Cisco
    * H3C fixes (begemot)
    * Only use L2::ZyXEL_DSLAM for ZyXEL DSL modules

version 3.18 (2014-07-02)

   [ENHANCEMENTS]

    * Pseudo ENTITY-MIB methods added to L3::Tasman for hardware information
    * Capture VPC Keepalive IP addresses in L3::Nexus (jeroenvi)
    * L2::Netgear inheritance clean up and removal of unnecessary c_* methods
      defined in Info base class

   [BUG FIXES]

    * Correctly identify device type (class) for instantiated objects which
      have overridden layers.
    * [#58] Fix inheritance in L3::FWSM and L3::CiscoASA
    * [#71] Don't try to match on a false port description in lldp_if
    * [#54] Possible bad values returned for cdp_id and lldp_port with some HP
      gear (Joel Leonhardt)

version 3.17 (2014-06-23)

   [ENHANCEMENTS]

    * POD tests are not required for distribution.

version 3.16 (2014-06-23)

   [ENHANCEMENTS]

    * Add method resolution discovery in SNMP::Info::MRO helper module
    * Consolidate CiscoImage class into CiscoStats class
    * Clean up inheritance for Cisco classes.  With this change
      all applicable classes now inherit CiscoAgg, CiscoStpExtensions,
      CiscoPortSecurity, CiscoPower, and LLDP classes.
    * Remove inheritance of classes the devices do not support in L3::FWSM
      and L3::CiscoASA

   [BUG FIXES]

    * Use CiscoVTP methods to get interface VLAN in L3::Cisco rather than
      solely relying on the interface description.

version 3.15 (2014-07-10)

   [NEW FEATURES]

    * Offline mode and Cache export/priming.

   [ENHANCEMENTS]

    * Return serial number for Cisco 3850 from entPhysicalSerialNum

   [BUG FIXES]

    * Cisco SB serial number probably did not work

version 3.14 (2014-06-07)

   [ENHANCEMENTS]

    * Improvements to Mikrotik module (Alex Z)
    * Don't unshift length from broken lldpRemManAddrTable implementations (G. Shtern)
    * 802.3ad LAG support in Layer3::H3C
    * Add LLDP capabilities to Layer2::HPVC class

   [BUG FIXES]

    * Return correct VLAN info with qb_fw_table() on Layer2::HP

version 3.13 (2014-03-27)

   [ENHANCEMENTS]

    * Cisco PAgP support added to LAG method
    * HP ProCurve LAG support by inheriting Info::Aggregate class

version 3.12 (2014-02-10)

   [ENHANCEMENTS]

    * Modify L3::Passport to obtain forwarding table information from
      RAPID-CITY if information is not available in either Q-BRIDGE-MIB or
      BRIDGE-MIB.  Needed for VSP 9000 prior to version 4.x (Tobias Gerlach)

   [BUG FIXES]

    * [#52] NETSCREEN-IP-ARP-MIB considered harmful
    * Foundry/Brocade aggreate port master ifIndex resolved properly

version 3.11 (2014-01-26)

   [NEW FEATURES]

    * [#31] port-channel (aggregate) support.  Aggregate support added in new
      agg_ports() method.  Inital support added for Arista (ifStack),
      Avaya (MLT), Brocade (MST), and Cisco (802.3ad).

   [ENHANCEMENTS]

    * Use Q-BRIDGE-MIB as default with fallback to BRIDGE-MIB across all
      classes for the fw_mac, fw_port, and fw_status methods
    * Additional support for Avaya 8800 series in L3::Passport

   [BUG FIXES]

    * Modify cdp_cap() to handle devices which return space delimited strings
      for cdpCacheCapabilities rather than hex strings
    * [#51] Netdisco shows broken topology for devices with no alias entry
      for primary IP - Collect nsIfMngIp when getting IP interfaces in
      L3::Netscreen
    * Fix Extreme XOS i_vlan_membership - Revert [28bbe0], fix bug with
      untagged being added to @ret twice (Robert Kerr)
    * Skip default CPU management addresses on VSP and 8800/8600 series in
      L3::Passport to prevent erroneous duplicate addresses

version 3.10 (2013-12-16)

   [BUG FIXES]

    * Data values of zero are now sent to munge method instead of skipped

version 3.09 (2013-12-15)

   [NEW FEATURES]

    * [#45] IBM (Blade Network Technologies) Rackswitch support in new class
      L3::IBMGbTor
    * [] set_i_untagged combines both set_i_vlan and set_i_pvid in one method
    * [#41] Riverbed Steelhead support added in new class L3::Steelhead
    * New c_cap(), cdp_cap(), and lldp_cap() methods which return a hash of
      arrays with each array containing the system capabilities reported as
      supported by the remote system via CDP or LLDP.

   [ENHANCEMENTS]

    * Remove "Switch" from model name in L3::Foundry
    * [#49] IOS-XR support, add identification of IOS XR and version in
      CiscoStats
    * Aruba POE Support
    * Aruba utilizes Q-BRIDGE-MIB when available for VLAN information to
      better support wired switches
    * Add lldp_platform() method which uses lldp_rem_sysdesc() or
      lldp_rem_sysname() to provide a clue to type of remote LLDP capable
      device.
    * [RT#78232] Extend cdpCacheCapabilities to show more CDP bits

   [BUG FIXES]

    * Modify _xos_i_vlan_membership() in L3::Extreme to only include tagged
      ports
    * When determining the BSSID in Airespace there is only one hexadecimal
      digit available so skip if outside the range of 1-16, 17 is reserved
      for 3rd party AP's
    * Don't assume entity index 1 is the chassis and has serial in Layer3
    * Capture serial number on newer Aruba devices
    * munge_bits() correctly unpacks BITS
    * Fix for single instance table leafs in test_class_mocked.pl
    * Fix power module indexing

version 3.08 (2013-10-22)

   [ENHANCEMENTS]

    * Rewrite of L3::Aruba, now supports pseudo ENTITY-MIB methods to gather
      module information, more interface information for APs, more
      wireless information to include client stats, and arpnip information
      from wireless clients.  WARNING: AP device interfaces are now based on
      AP MAC and radio versus BSSID to align with other wireless classes.
    * [#64] Add i_speed_admin() to L2::2900 (psychiatric)
    * [#66] Support for VSS via CISCO-VIRTUAL-SWITCH-MIB in L3::6500
    * [#67] Add the possibility to set speed for Layer3::C4000 (psychiatric)
    * [#69] set speed and duplex on Cisco VSS system (psychiatric)
    * munge_null() now removes all non-printable control characters
    * Support Aironet standalone access points (Layer2::Aironet) running IOS15
    * lldp_port() returns port ID instead of port description if the port ID
      subtype is "interface name".  This improves the ability to correlate
      ports by name when a port description is also set.
    * Add docs note about make_snmpdata.pl under EXTENDING SNMP::Info
    * [#46] Brocade (Foundry) Module Support
    * Brocade (Foundry) POE Support
    * Support peth_port_power() power supplied by PoE ports in L2::Baystack
    * Update test_class.pl utility to allow ignore of snmp.conf and test
      summarize more standard class methods
    * On EOS, the LLDP port ID is a dot1d port
    * Use LLDP in Layer3::Aruba, for switches
    * Clean up more model names in L2::Baystack

   [BUG FIXES]

    * [#68] Fix device_port entries for switches with non-unique
      ifDesc (Nic Bernstein)
    * Don't try to munge undef values
    * [#49] Perl 5.18 UNIVERSAL::can change could cause infinite loop
    * Silence warning from uninitialized variable in L3::Passport e_descr()

version 3.07 (2013-10-01)

   [ENHANCEMENTS]

    * Support for Pica8 switches in L3::Pica8
    * Factor out cache/munge code from global/attr methods

   [BUG FIXES]

   * [#48] Switch duplicate J9624A for J9626A in Layer2/HP (R. Kerr)
   * Correct device serial number reporting for Nexus devices
   * Override ipAddrTable methods in L3::Nexus as some versions do not
     index the table with the IPv4 address in accordance with the MIB
     definition.

version 3.05 (2013-08-16)

   [ENHANCEMENTS]

    * [#47] Add model info on HP 2530 and HP 2920 series
    * Add support for Cisco Small Business series
      Layer2/CiscoSB class
    * Add proper LLDP support to Netgear.pm
    * Change $netgear->interfaces() to use ifName rather than ifDescr
      as the former is unique per interface while the latter is not.
      If ifName is not present, concatenate ifDescr and ifIndex
      to achieve a unique value.
    * Properly report hardware version, Serial No. and OS Version for
      Netgear.

version 3.03 (2013-07-11)

    [BUG FIXES]

    * Add missing =back to POD (A. Hartmaier)

version 3.02 (2013-07-08)

    [ENHANCEMENTS]

    * Properly pull os_ver from Netgear GS series switches.
    * Support Alcatel devices with layer3 features.
    * Identify Cisco Aironet 1140 APs as Layer2::Aironet
    * LAN switch support added to Layer3::Aruba class
    * [RT#86725] - Identify Cisco Catalyst 3850 as Layer3::C6500 (C. Causer)

version 3.01 (2013-04-13)

    [API Changes]

    * The methods c_ip(), c_if(), c_port(), c_id(), and c_platform() now
      represent common topology methods and will try to return a combined
      hash of data from all L2 topology protocols either running on the
      device or specified in the method call.  The topology specific methods
      have been been prefixed with the protocol name in lowercase so that
      they can be called directly, sonmp_ip(), cdp_ip(), etc.
    * L2::Bay and L2::Foundry have been removed from the distribution.  Both
      classes were depreciated and all functionality is available through
      L2::Baystack and L3::Foundry.

    [NEW FEATURES]

    * [3160037] - Support _raw suffix on methods to skip munging
    * [3185391] - Support for F5 devices in new class L3::F5
    * [3323814] - Arp support for Netscreen (David Baldwin)
    * [3323821] - Support for Netscreen w/ WLAN (eg SSG5) (David Baldwin)
    * [3599277] - Q-BRIDGE Support to collect VLAN in macsuck
    * [3033731] - Alcatel-Lucent OmniSwich AMAP Support in new AMAP class
    * [3598896] - Lantronix device support (J R Binks)
    * [3598337] - Lantronix SLC support
    * Support for Cisco ASA in L3::CiscoASA (Kraus/Hartmaier/Bernstein)
    * Support for Avaya VSP 9000 series in L3::Passport
    * Support for Avaya VSP 7000 series in L2::Baystack
    * Support Avaya (Trapeze) Wireless Controllers in new class L2::NWSS2300
    * Support Juniper (Trapeze) Wireless Controllers in new class L2::Trapeze
    * Support for newer Radware Alteon ADC switches 4408/4416/5412/5224 and
      older AWS 2000/3000 series in existing L3::AlteonAD
    * Support for H3C & HP A-series in new class L3::H3C
    * Support for Citrix Netscaler appliances in new class L7::Netscaler
    * New configuration option IgnoreNetSNMPConf will ignore Net-SNMP
      configuration files on object initialization
    * Two new utilities added in t/util to assist in developing device
      support; make_snmpdata.pl gathers SNMP data (snmpwalk) in a format that
      can be used with test_class_mocked.pl which mocks an SNMP agent to
      enable testing with no network access to a device.

    [ENHANCEMENTS]

    * UNIVERSAL::can() now works with dynamic methods
    * Dynamically generated methods are added to symbol table to avoid
      AUTOLOAD on subsequent calls
    * L2::Airespace now supports 802.11n client tx rates
    * L2::Airespace now reports AP Ethernet MAC as port MAC for radio ports
    * CiscoStats improvements to determine os versions, eg IOS XE ver on Sup7L-E
    * CiscoStats now reports 'ios-xe' if the device runs IOS XE (used to be 'ios')
    * Improved support of XOS based Extreme devices

    [BUG FIXES]

    * [3564920] - lldp_if gives wrong data for Enterasys

version 2.11 (2012-12-09)

    [BUG FIXES]

    * Add fall-back for sysDescr on Force10

version 2.10 (2012-12-08)

    [NEW FEATURES]

    * Support for Force10 devices (W. Bulley)
jperkin pushed a commit that referenced this issue Dec 14, 2015
v2.0.4

Major Enhancements

* Classification thresholds can be enabled or disabled. The default is
  disabled. The threshold value can be set at initialization time or
  dynamically during processing (#47)
* Made auto-categorization optional, defaulting to false (#45)
* Added the ability to handle an array of classifications to the constructor
  (#44)
* Classification with a threshold has been added to the api (#39)

Minor Enhancements

* Documentation around threshold usage (#54)
* Fixed UTF-8 encoding for hasher.rb (#50)
* Removed some unnecessary methods (#43)
* Add optional CachedContentNode (GSL only) (#43)
* Caches the transposed search_vector (#43)
* Added custom marshal_ methods to not save the cache when dumping/loading
  (#43)
* Optimized some numeric comparisons and iterators (#43)
* Added cached calculation table when computing raw_vectors (#43)
* If a category name is already a symbol, just return it (#45)
* Various Hash improvements (#45)
* Eliminated several Ruby ⚠️s when run with RUBYOPT="-w" (#38)
* Simple performance improvements for the Hasher process (#41)
* Fixes for broken regex splitting for non-ascii characters and removal of the
  unused punctuation filter (#41)
* Add multiple language stopwords with customizable stop word paths (#40)

Bug Fixes

* Fixed the bug where adding the same category a second time would clobber the
  category that was already there (#45)
* Fixed deprecation warning for <=> in ls.rb (#33)
* Remove references to Madeline in the README and replace it with Marshal or
  Redis (#32)

Development Fixes

* Added development dependency on mini_test and added 2.2 to travis.yml (#36)
jperkin pushed a commit that referenced this issue Jan 9, 2016
v1.10.1
=======

* fix issue #73 - in hg pre commit merge, consider parent1 instead of failing

v1.10.0
=======

* add support for overriding the version number via the
  environment variable SETUPTOOLS_SCM_PRETEND_VERSION

* fix isssue #63 by adding the --match parameter to the git describe call
  and prepare the possibility of passing more options to scm backends

* fix issue #70 and #71 by introducing the parse keyword
  to specify custom scm parsing, its an expert feature,
  use with caution

  this change also introduces the setuptools_scm.parse_scm_fallback
  entrypoint which can be used to register custom archive fallbacks


v1.9.0
======

* Add :code:`relative_to` parameter to :code:`get_version` function;
  fixes #44 per #45.

v1.8.0
======

* fix issue with setuptools wrong version warnings being printed to standard
  out. User is informed now by distutils-warnings.
* restructure root finding, we now reliably ignore outer scm
  and prefer PKG-INFO over scm, fixes #43 and #45

v1.7.0
======

* correct the url to github
  thanks David Szotten
* enhance scm not found errors with a note on git tarballs
  thanks Markus
* add support for :code:`write_to_template`
mamash pushed a commit that referenced this issue Apr 6, 2016
v2.1
- Issue #156 parsedatetime 2.0 doesn't work on py26

v2.0
- Issue #155 Relative times containing years fail when computed
  from a leap day
- Issue #145 cal.parse('2015-11-18') returns November 19th 2015
- Issue #143 What is the second value returned by `parse`?
- Issue #141 Bad test case in TestComplexDateTimes
- Issue #123 update supporting files for v2.0 release
- Issue #124 Put locales into config-files (yaml)
- Issue #125 Remove extra files
- Issue #137 Year is parsed wrongly if the date is of format
  MMM DD, YYxx xx:SS bug
- Issue #136 Why I see 2016 instead of 2015?
- Issue #133 Bug: "2015-01-01" is parsed as the current date.
- Issue #126 "Unresolved attribute reference 'parse' for class
  'object'... " in Pycharm IDE. bug
- Issue #120 the pdt_locales/en_AU.py file uses en_A for
  the localID instead of en_AU
- Issue #114 Dates in the format 'YYYY-MM-DD HH:MM' give
  the incorrect month and day
- Issue #112 Document getting a time from parsedatetime
  into a standard Python structure
- Issue #110 AttributeError when running in the context
  of an HTTP request
- Issue #109 YearParseStyle is ignored for dates in MM/DD style
- Issue #107 yyyy/mm/dd date format
- Issue #105 "this week" is not parsed
- Issue #103 get UTC times from parseDT - trouble with at 9:30
  clock times being interpreted directly in UTC
- Issue #100 Fractional deltas result in incoherent results.
- PR #118 ADD: improve russian locale
- PR #117 ADD: Russian Locale
- PR #116 Fix spelling of "separator".
- PR #115 Update README.rst
- PR #113 Add datetime example to readme.
- PR #111 Allowed real number appear in text like "5.5 days ago"

v1.5
- Issue #99 Which year is implied when given just a month and day?
  Next and last? question
- Issue #96 Word boundary issues for specials (on, at, in) in nlp
- Issue #94 inconsistent application of sourceTime
  in Calendar.parseDT
- Issue #87 nlp() doesn't recognize some "next ..." expressions
- Issue #84 Afternoon? bug
- Issue #82 'last week' and 'next week' are broken
- Issue #81 parse returns default time of 0900 with dates like
  'next friday' despite passed struct_time bug
- Issue #78 Link for Travis in README is wrong
- Issue #72 Enable travis
- Issue #71 Calendar() class can not be initialized 1.4 (it's
  fine)
- Issue #66 Unexpected struct_time flag with Calendar.parse
  on HTML <a href> string
- Issue #65 NLP false positives
- Issue #63 Supporting multiple shortweekday abbreviations
- Issue #61 Short weekday abbreviations bug
- Issue #56 Parse words to numbers (thirteen => 13)
- Issue #54 testMonths fails
- commit 107c7e4655 fix for issue 95 - parsing 'next june 15'
- commit 2c0c8ec778 Fixed faulty test, "730am" parses as "73:0 am"
  which is a bug for a later day.
- commit 6f244e891d Fix "ones" parsing as "1s." Require a word
  boundary between spelled numbers and units.
- commit 035818edef Fix "1 day ago" parsing like "1d 1y ago"
  where "a" within the word "day" is interpreted as 1.
- commit 45002e6eec Fixes "next week" and similar modifier
  + unit pairs in nlp()
- commit 47d2e1d527 Fixed "last week"

v1.4
- Updated setup.py for wheel compatibility
- renamed README.txt to README.rst
- renamed MANIFEST to MANIFEST.in
- cleaned up a lot of the doc and notes
- Commit 3fc165e701 mafagafo Now it works for Python 3.4.1
- Commit d5883801e7 borgstrom Restore Python 2.6 compatibility

1.3
- Issue #45 make a new release to really fix backwards
  compatibility
- Issue #43 Please tag version 1.3
- Commit 29c5c8961d devainandor fixed Python 3 compatibility
  in pdtLocale_icu
- Commit d7304f18f7 inean Fix support for 'now' when no modifiers
  are present
- Commit 26bfc91c28 sashaacker Added parseDT method.
- Commit 848deb47e2 rmecham Added support for dotted meridians.
- Commit c821e08ce2 ccho-sevenrooms corrected misspelling
  of 'thirteen'
- Biggest change is the addition of the nlp() function
  by Geoffrey Floyd:
    nlp() function that utilizes parse() after making judgements
    about what datetime information belongs together. It makes
    logical groupings based on proximity and returns a parsed
    datetime for each matched grouping of datetime text, along
    with location info within the given inputString.
jperkin pushed a commit that referenced this issue Apr 7, 2016
v2.1
- Issue #156 parsedatetime 2.0 doesn't work on py26

v2.0
- Issue #155 Relative times containing years fail when computed
  from a leap day
- Issue #145 cal.parse('2015-11-18') returns November 19th 2015
- Issue #143 What is the second value returned by `parse`?
- Issue #141 Bad test case in TestComplexDateTimes
- Issue #123 update supporting files for v2.0 release
- Issue #124 Put locales into config-files (yaml)
- Issue #125 Remove extra files
- Issue #137 Year is parsed wrongly if the date is of format
  MMM DD, YYxx xx:SS bug
- Issue #136 Why I see 2016 instead of 2015?
- Issue #133 Bug: "2015-01-01" is parsed as the current date.
- Issue #126 "Unresolved attribute reference 'parse' for class
  'object'... " in Pycharm IDE. bug
- Issue #120 the pdt_locales/en_AU.py file uses en_A for
  the localID instead of en_AU
- Issue #114 Dates in the format 'YYYY-MM-DD HH:MM' give
  the incorrect month and day
- Issue #112 Document getting a time from parsedatetime
  into a standard Python structure
- Issue #110 AttributeError when running in the context
  of an HTTP request
- Issue #109 YearParseStyle is ignored for dates in MM/DD style
- Issue #107 yyyy/mm/dd date format
- Issue #105 "this week" is not parsed
- Issue #103 get UTC times from parseDT - trouble with at 9:30
  clock times being interpreted directly in UTC
- Issue #100 Fractional deltas result in incoherent results.
- PR #118 ADD: improve russian locale
- PR #117 ADD: Russian Locale
- PR #116 Fix spelling of "separator".
- PR #115 Update README.rst
- PR #113 Add datetime example to readme.
- PR #111 Allowed real number appear in text like "5.5 days ago"

v1.5
- Issue #99 Which year is implied when given just a month and day?
  Next and last? question
- Issue #96 Word boundary issues for specials (on, at, in) in nlp
- Issue #94 inconsistent application of sourceTime
  in Calendar.parseDT
- Issue #87 nlp() doesn't recognize some "next ..." expressions
- Issue #84 Afternoon? bug
- Issue #82 'last week' and 'next week' are broken
- Issue #81 parse returns default time of 0900 with dates like
  'next friday' despite passed struct_time bug
- Issue #78 Link for Travis in README is wrong
- Issue #72 Enable travis
- Issue #71 Calendar() class can not be initialized 1.4 (it's
  fine)
- Issue #66 Unexpected struct_time flag with Calendar.parse
  on HTML <a href> string
- Issue #65 NLP false positives
- Issue #63 Supporting multiple shortweekday abbreviations
- Issue #61 Short weekday abbreviations bug
- Issue #56 Parse words to numbers (thirteen => 13)
- Issue #54 testMonths fails
- commit 107c7e4655 fix for issue 95 - parsing 'next june 15'
- commit 2c0c8ec778 Fixed faulty test, "730am" parses as "73:0 am"
  which is a bug for a later day.
- commit 6f244e891d Fix "ones" parsing as "1s." Require a word
  boundary between spelled numbers and units.
- commit 035818edef Fix "1 day ago" parsing like "1d 1y ago"
  where "a" within the word "day" is interpreted as 1.
- commit 45002e6eec Fixes "next week" and similar modifier
  + unit pairs in nlp()
- commit 47d2e1d527 Fixed "last week"

v1.4
- Updated setup.py for wheel compatibility
- renamed README.txt to README.rst
- renamed MANIFEST to MANIFEST.in
- cleaned up a lot of the doc and notes
- Commit 3fc165e701 mafagafo Now it works for Python 3.4.1
- Commit d5883801e7 borgstrom Restore Python 2.6 compatibility

1.3
- Issue #45 make a new release to really fix backwards
  compatibility
- Issue #43 Please tag version 1.3
- Commit 29c5c8961d devainandor fixed Python 3 compatibility
  in pdtLocale_icu
- Commit d7304f18f7 inean Fix support for 'now' when no modifiers
  are present
- Commit 26bfc91c28 sashaacker Added parseDT method.
- Commit 848deb47e2 rmecham Added support for dotted meridians.
- Commit c821e08ce2 ccho-sevenrooms corrected misspelling
  of 'thirteen'
- Biggest change is the addition of the nlp() function
  by Geoffrey Floyd:
    nlp() function that utilizes parse() after making judgements
    about what datetime information belongs together. It makes
    logical groupings based on proximity and returns a parsed
    datetime for each matched grouping of datetime text, along
    with location info within the given inputString.
jperkin pushed a commit that referenced this issue Jun 20, 2016
[v3.0][] - 2016-03-03
---------------------

This release signifies a major change in libConfuse.  On out-of-memory
conditions at run time, invalid API input, and some other odd use-cases,
libConfuse will no longer `assert()`.  Instead, `NULL` or `CFG_FAIL` is
returned with an error code for you to handle.  For some users this will
completely change how your application works, so heads up!  The library
ABI version has also been stepped due to this.

Special thanks in this release goes out to Frank Hunleth, Peter Rosin
and David Grayson for their tireless efforts in helping improve this
library!

**Note:** libConfuse no longer calls `setlocale()` for `LC_MESSAGES` and
  `LC_CTYPE`.  See the documentation for `cfg_init()` for details.

### Changes

* Support for handling unknown options.  The idea is to provide future
  proofing of configuration files, i.e. if a new parameter is added, the
  new config file will not fail if loaded in an older version of your
  program.  See the `CFGF_IGNORE_UNKNOWN` flag in the documenation for
  more information.  Idea and implementation by Frank Hunleth.
* Add public API for removing sections at runtime, by Peter Rosin.
* Allow `cfg_opt_getval()` on options that are `CFGF_MULTI` sections,
  by Peter Rosin.
* Add `cfg_setmulti()` and `cfg_opt_setmulti()`, by Peter Rosin.
* Add CLI example of how to manage configuration changes at runtime,
  also by Peter Rosin.
* Support for Travis-CI and Coverity Scan, by Joachim Nilsson.
* Use `autoreconf` in `autogen.sh` instead of calling tools separately.
* Powershell script for AppVeyor CI to build libConfuse with MSYS2
  by David Grayson.
* Removed calls to `setlocale()` intended to localize messages, with
  `LC_MESSAGES`, and region specific types, with `LC_CTYPE`.  This is
  now the responsibility of the user of the library.
* Reindent to Linux coding style for a clear and well defined look,
  this to ease future maintenance.  Issue #33
* Add support for `CFGF_DEPRECATED` and `CFGF_DROP` option flags.  The
  former causes libConfuse to print a deprecated warning message and the
  latter drops the read value on input.  Idea and implementation by
  Sebastian Geiger.  Issue #24
* Add `HACKING.md` document to detail maintenance and release checklists

### Fixes

* Do not assert on API input validation, memory allocation, or similar.
  Instead, return error code to user for further handling.  This change
  also includes fixes for a lot of unchecked API return values, e.g.,
  `strdup()`.  Issue #37
* Protect callers arguments to `cfg_setopt()`, by Peter Rosin
* If new value to `cfg_setopt()` fails parsing, do not lose old value,
  by Peter Rosin.
* Fixes to update support for older versions of Microsoft Visual Studio
  as well as MSYS2/mingw-w64 by Peter Rosin and David Grayson.
* Issue #45: `cfg_init()` does not report error on multiple options with
  the same name.  Fixed by Peter Rosin.
* Fixes for memory leaks, invalid expressions, unused variables and
  missing error handling, all thanks to Coverity Scan
jperkin pushed a commit that referenced this issue Aug 24, 2016
Changes:
v0.8.19 2016-03-23  The Irssi team <[email protected]>
	- Fixed regression when joining and parting channels on IRCnet (#435)
	- Fixed SASL EXTERNAL (#432)
	- Fixed regression when not using SASL (#438)
	- Fixed incorrect SSL disconnects when using SSL from modules/scripts
	  (#439)
	- Fixed regression where proxy_string could not be configured or
	  certain file transfers could not be accepted (#445)
	- Fixed storing layout of !channels (#183)
	- Fixed restoration of bracketed paste mode on quit (#449)
	- Make the usage of meta-O for cursor keys configurable with
	      /set term_appkey_mode off

v0.8.18 2016-02-13  The Irssi team <[email protected]>
	* Modules will now require to define a
	      void MODULENAME ## _abicheck(int *version)
	  method to ensure that they are compiled against the correct Irssi
	  version.
	* The signature of "message private" has been changed to
	      5: server, message, nick, address, target
	  in order to support "self messages". Module authors should
	  implement this change if they are using this signal.
	* Removing networks will now remove all attached servers and channels
          (#45).
	* The proxy module now has an /irssiproxy command.
	* sb_search has been moved to scripts.irssi.org
	* WIN32 has been completely removed (it had not been working and is
          lacking a maintainer.)
	* Garbage Collection support has been removed. This will hardly have any
	  effect for anyone given that it has been unsupported for several years.
	+ CAP SASL PLAIN login is now supported natively.
	+ Paste bracket markers can be requested from terminal with
	      /set paste_use_bracketed_mode on
	+ "Self messages" generated by some bouncers can now be received in the
	  proper window.
	+ Try to split long lines on spaces to avoid words being splitted. Adds
	  a new option: 'split_line_on_space' which defaults to on.
	+ Add setting hilight_nick_matches_everywhere (#56).
	+ The config parser is more robust and prints out better diagnostics on
	  incorrect config files.
	+ Ctrl+^ (FS#721) and Ctrl+J can now be bound.
	+ Command history can be cleared with /window history -clear
	+ /hilight -mask -line is now supported (FS#275).
	+ CHANTYPES are now supported.
	+ Improved reload speed of ignores.
	+ Add -date feature to /lastlog
	+ irssiproxy can be more easily enabled and disabled.
	+ Expando for hostname (FS#829).
	+ UNIX sockets can now also be specified in the config file.
	+ Disable SSLv3 due to the POODLE vulnerability.
	+ SSL ciphers can now be specified per server.
	+ Added SNI support for SSL.
	- /ignore now respects -pattern on merge (#78).
	- irssiproxy (BNC) module now uses correct line endings.
	- Fix missing lines on large pastes (FS#905).
	- Correctly preserve STATUSMSG prefixes (#291).
	- Fix infinite recursion in key bindings (FS#817).
	- Fix incomplete awaylog caused by buffering.
	- Fix calculation of UTF-8 string length display in some cases.
	- Fix some Perl warnings related to @isa.
	- EXEC windowitems now get proper references on the Perl side.
	- Incremental help file improvements.
	- ANSI attributes are now properly reset.
	- Fixed regression where text would blink when terminal lacks color
          support.
	- Permit the usage of Freenode extban syntax in /ban (#150)
	- Fixed regression in scriptassist on unload of scripts.
	- Fixed regression in -actcolor %n
jperkin pushed a commit that referenced this issue Aug 24, 2016
NEWS:
Version 2.5.3
-------------
- Updated zoneinfo to 2016d
- Fixed parser bug where unambiguous datetimes fail to parse when dayfirst is
  set to true. (gh issue #233, pr #234)
- Bug in zoneinfo file on platforms such as Google App Engine which do not
  do not allow importing of subprocess.check_call was reported and fixed by
  @savraj (gh issue #239, gh pr #240)
- Fixed incorrect version in documentation (gh issue #235, pr #243)

Version 2.5.2
-------------
- Updated zoneinfo to 2016c
- Fixed parser bug where yearfirst and dayfirst parameters were not being
  respected when no separator was present. (gh issue #81 and #217, pr #229)

Version 2.5.1
-------------
- Updated zoneinfo to 2016b
- Changed MANIFEST.in to explicitly include test suite in source distributions,
  with help from @koobs (gh issue #193, pr #194, #201, #221)
- Explicitly set all line-endings to LF, except for the NEWS file, on a
  per-repository basis (gh pr #218)
- Fixed an issue with improper caching behavior in rruleset objects (gh issue
  #104, pr #207)
- Changed to an explicit error when rrulestr strings contain a missing BYDAY
  (gh issue #162, pr #211)
- tzfile now correctly handles files containing leapcnt (although the leapcnt
  information is not actually used). Contributed by @hjoukl (gh issue #146, pr
  #147)
- Fixed recursive import issue with tz module (gh pr #204)
- Added compatibility between tzwin objects and datetime.time objects (gh issue
  #216, gh pr #219)
- Refactored monolithic test suite by module (gh issue #61, pr #200 and #206)
- Improved test coverage in the relativedelta module (gh pr #215)
- Adjusted documentation to reflect possibly counter-intuitive properties of
  RFC-5545-compliant rrules, and other documentation improvements in the rrule
  module (gh issue #105, gh issue #149 - pointer to the solution by @phep,
  pr #213).


Version 2.5.0
-------------
- Updated zoneinfo to 2016a
- zoneinfo_metadata file version increased to 2.0 - the updated updatezinfo.py
  script will work with older zoneinfo_metadata.json files, but new metadata
  files will not work with older updatezinfo.py versions. Additionally, we have
  started hosting our own mirror of the Olson databases on a github pages
  site (https://dateutil.github.io/tzdata/) (gh pr #183)
- dateutil zoneinfo tarballs now contain the full zoneinfo_metadata file used
  to generate them. (gh issue #27, gh pr #85)
- relativedelta can now be safely subclassed without derived objects reverting
  to base relativedelta objects as a result of arithmetic operations.
  (lp:1010199, gh issue #44, pr #49)
- relativedelta 'weeks' parameter can now be set and retrieved as a property of
  relativedelta instances. (lp: 727525, gh issue #45, pr #49)
- relativedelta now explicitly supports fractional relative weeks, days, hours,
  minutes and seconds. Fractional values in absolute parameters (year, day, etc)
  are now deprecated. (gh issue #40, pr #190)
- relativedelta objects previously did not use microseconds to determine of two
  relativedelta objects were equal. This oversight has been corrected.
  Contributed by @elprans (gh pr #113)
- rrule now has an xafter() method for retrieving multiple recurrences after a
  specified date. (gh pr #38)
- str(rrule) now returns an RFC2445-compliant rrule string, contributed by
  @schinckel and @armicron (lp:1406305, gh issue #47, prs #50, #62 and #160)
- rrule performance under certain conditions has been significantly improved
  thanks to a patch contributed by @dekoza, based on an article by Brian Beck
  (@exogen) (gh pr #136)
- The use of both the 'until' and 'count' parameters is now deprecated as
  inconsistent with RFC2445 (gh pr #62, #185)
- Parsing an empty string will now raise a ValueError, rather than returning the
  datetime passed to the 'default' parameter. (gh issue #78, pr #187)
- tzwinlocal objects now have a meaningful repr() and str() implementation
  (gh issue #148, prs #184 and #186)
- Added equality logic for tzwin and tzwinlocal objects. (gh issue #151,
  pr #180, #184)
- Added some flexibility in subclassing timelex, and switched the default
  behavior over to using string methods rather than comparing against a fixed
  list. (gh pr #122, #139)
- An issue causing tzstr() to crash on Python 2.x was fixed. (lp: 1331576,
  gh issue #51, pr #55)
- An issue with string encoding causing exceptions under certain circumstances
  when tzname() is called was fixed. (gh issue #60, #74, pr #75)
- Parser issue where calling parse() on dates with no day specified when the
  day of the month in the default datetime (which is "today" if unspecified) is
  greater than the number of days in the parsed month was fixed (this issue
  tended to crop up between the 29th and 31st of the month, for obvious reasons)
  (canonical gh issue #25, pr #30, #191)
- Fixed parser issue causing fuzzy_with_tokens to raise an unexpected exception
  in certain circumstances. Contributed by @MichaelAquilina (gh pr #91)
- Fixed parser issue where years > 100 AD were incorrectly parsed. Contributed
  by @Bachmann1234 (gh pr #130)
- Fixed parser issue where commas were not a valid separator between seconds
  and microseconds, preventing parsing of ISO 8601 dates. Contributed by
  @RyansS (gh issue #28, pr #106)
- Fixed issue with tzwin encoding in locales with non-Latin alphabets
  (gh issue #92, pr #98)
- Fixed an issue where tzwin was not being properly imported on Windows.
  Contributed by @labrys. (gh pr #134)
- Fixed a problem causing issues importing zoneinfo in certain circumstances.
  Issue and solution contributed by @alexxv (gh issue #97, pr #99)
- Fixed an issue where dateutil timezones were not compatible with basic time
  objects. One of many, many timezone related issues contributed and tested by
  @labrys. (gh issue #132, pr #181)
- Fixed issue where tzwinlocal had an invalid utcoffset. (gh issue #135,
  pr #141, #142)
- Fixed issue with tzwin and tzwinlocal where DST transitions were incorrectly
  parsed from the registry. (gh issue #143, pr #178)
- updatezinfo.py no longer suppresses certain OSErrors. Contributed by @bjamesv
  (gh pr #164)
- An issue that arose when timezone locale changes during runtime has been
  fixed by @carlosxl and @mjschultz (gh issue #100, prs #107, #109)
- Python 3.5 was added to the supported platforms in the metadata (@tacaswell
  gh pr #159) and the test suites (@moreati gh pr #117).
- An issue with tox failing without unittest2 installed in Python 2.6 was fixed
  by @moreati (gh pr #115)
- Several deprecated functions were replaced in the tests by @moreati
  (gh pr #116)
- Improved the logic in Travis and Appveyor to alleviate issues where builds
  were failing due to connection issues when downloading the IANA timezone
  files. In addition to adding our own mirror for the files (gh pr #183), the
  download is now retried a number of times (with a delay) (gh pr #177)
- Many failing doctests were fixed by @moreati. (gh pr #120)
- Many fixes to the documentation (gh pr #103, gh pr #87 from @radarhere,
  gh pr #154 from @gpoesia, gh pr #156 from @awsum, gh pr #168 from @ja8zyjits)
- Added a code coverage tool to the CI to help improve the library. (gh pr #182)
- We now have a mailing list - [email protected], graciously hosted by
  Python.org.


Version 2.4.2
-------------
- Updated zoneinfo to 2015b.
- Fixed issue with parsing of tzstr on Python 2.7.x; tzstr will now be decoded
  if not a unicode type. gh #51 (lp:1331576), gh pr #55.
- Fix a parser issue where AM and PM tokens were showing up in fuzzy date
  stamps, triggering inappropriate errors. gh #56 (lp: 1428895), gh pr #63.
- Missing function "setcachesize" removed from zoneinfo __all__ list by @RyansS,
  fixing an issue with wildcard imports of dateutil.zoneinfo. (gh pr #66).
- (PyPi only) Fix an issue with source distributions not including the test
  suite.


Version 2.4.1
-------------

- Added explicit check for valid hours if AM/PM is specified in parser.
  (gh pr #22, issue #21)
- Fix bug in rrule introduced in 2.4.0 where byweekday parameter was not
  handled properly. (gh pr #35, issue #34)
- Fix error where parser allowed some invalid dates, overwriting existing hours
  with the last 2-digit number in the string. (gh pr #32, issue #31)
- Fix and add test for Python 2.x compatibility with boolean checking of
  relativedelta objects. Implemented by @nimasmi (gh pr #43) and Cédric Krier
  (lp: 1035038)
- Replaced parse() calls with explicit datetime objects in unit tests unrelated
  to parser. (gh pr #36)
- Changed private _byxxx from sets to sorted tuples and fixed one currently
  unreachable bug in _construct_byset. (gh pr #54)
- Additional documentation for parser (gh pr #29, #33, #41) and rrule.
- Formatting fixes to documentation of rrule and README.rst.
- Updated zoneinfo to 2015a.
jperkin pushed a commit that referenced this issue Sep 26, 2016
chat/irssi: security fix, bugfixes
chat/irssi-icb: security fix, bugfixes
chat/irssi-xmpp: security fix, bugfixes

Revisions pulled up:
- chat/irssi-icb/Makefile                                       1.39
- chat/irssi-icb/distinfo                                       1.23-1.24
- chat/irssi-icb/patches/patch-src_core_icb-core.c              1.1
- chat/irssi-icb/patches/patch-src_fe-common_fe-icb.c           1.1
- chat/irssi-xmpp/Makefile                                      1.6-1.7,1.9-1.10
- chat/irssi-xmpp/PLIST                                         1.2
- chat/irssi-xmpp/distinfo                                      1.5-1.6
- chat/irssi/Makefile                                           1.72-1.73
- chat/irssi/Makefile.common                                    1.17-1.18
- chat/irssi/PLIST                                              1.13-1.14
- chat/irssi/distinfo                                           1.35-1.37
- chat/irssi/options.mk                                         1.12
- chat/irssi/patches/patch-scripts_buf.pl                       1.1

---
   Module Name:    pkgsrc
   Committed By:   maya
   Date:           Sun Aug 14 21:10:35 UTC 2016

   Modified Files:
           pkgsrc/chat/irssi: Makefile Makefile.common PLIST distinfo options.mk

   Log Message:
   Update irssi to 0.8.19

   Changes:
   v0.8.19 2016-03-23  The Irssi team <staff%irssi.org@localhost>
           - Fixed regression when joining and parting channels on IRCnet (#435)
           - Fixed SASL EXTERNAL (#432)
           - Fixed regression when not using SASL (#438)
           - Fixed incorrect SSL disconnects when using SSL from modules/scripts
             (#439)
           - Fixed regression where proxy_string could not be configured or
             certain file transfers could not be accepted (#445)
           - Fixed storing layout of !channels (#183)
           - Fixed restoration of bracketed paste mode on quit (#449)
           - Make the usage of meta-O for cursor keys configurable with
                 /set term_appkey_mode off

   v0.8.18 2016-02-13  The Irssi team <staff%irssi.org@localhost>
           * Modules will now require to define a
                 void MODULENAME ## _abicheck(int *version)
             method to ensure that they are compiled against the correct Irssi
             version.
           * The signature of "message private" has been changed to
                 5: server, message, nick, address, target
             in order to support "self messages". Module authors should
             implement this change if they are using this signal.
           * Removing networks will now remove all attached servers and channels
             (#45).
           * The proxy module now has an /irssiproxy command.
           * sb_search has been moved to scripts.irssi.org
           * WIN32 has been completely removed (it had not been working and is
             lacking a maintainer.)
           * Garbage Collection support has been removed. This will hardly have any
             effect for anyone given that it has been unsupported for several years.
           + CAP SASL PLAIN login is now supported natively.
           + Paste bracket markers can be requested from terminal with
                 /set paste_use_bracketed_mode on
           + "Self messages" generated by some bouncers can now be received in the
             proper window.
           + Try to split long lines on spaces to avoid words being splitted. Adds
             a new option: 'split_line_on_space' which defaults to on.
           + Add setting hilight_nick_matches_everywhere (#56).
           + The config parser is more robust and prints out better diagnostics on
             incorrect config files.
           + Ctrl+^ (FS#721) and Ctrl+J can now be bound.
           + Command history can be cleared with /window history -clear
           + /hilight -mask -line is now supported (FS#275).
           + CHANTYPES are now supported.
           + Improved reload speed of ignores.
           + Add -date feature to /lastlog
           + irssiproxy can be more easily enabled and disabled.
           + Expando for hostname (FS#829).
           + UNIX sockets can now also be specified in the config file.
           + Disable SSLv3 due to the POODLE vulnerability.
           + SSL ciphers can now be specified per server.
           + Added SNI support for SSL.
           - /ignore now respects -pattern on merge (#78).
           - irssiproxy (BNC) module now uses correct line endings.
           - Fix missing lines on large pastes (FS#905).
           - Correctly preserve STATUSMSG prefixes (#291).
           - Fix infinite recursion in key bindings (FS#817).
           - Fix incomplete awaylog caused by buffering.
           - Fix calculation of UTF-8 string length display in some cases.
           - Fix some Perl warnings related to @isa.
           - EXEC windowitems now get proper references on the Perl side.
           - Incremental help file improvements.
           - ANSI attributes are now properly reset.
           - Fixed regression where text would blink when terminal lacks color
             support.
           - Permit the usage of Freenode extban syntax in /ban (#150)
           - Fixed regression in scriptassist on unload of scripts.
           - Fixed regression in -actcolor %n

---
   Module Name:    pkgsrc
   Committed By:   leot
   Date:           Sun Aug 14 21:15:12 UTC 2016

   Modified Files:
           pkgsrc/chat/irssi-icb: Makefile distinfo
   Added Files:
           pkgsrc/chat/irssi-icb/patches: patch-src_core_icb-core.c
               patch-src_fe-common_fe-icb.c

   Log Message:
   Add support for irssi>=0.8.18 and update distinfo for irssi-0.8.19 update

---
   Module Name:    pkgsrc
   Committed By:   leot
   Date:           Sun Aug 14 21:16:04 UTC 2016

   Modified Files:
           pkgsrc/chat/irssi-xmpp: Makefile PLIST distinfo

   Log Message:
   Update chat/irssi-xmpp to 0.53

   pkgsrc changes:
    - Drop MAINTAINERship
    - Update distinfo for irssi-0.8.19

   Changes:
   0.53 - 18/03/2016
    - Irssi 0.8.18 support
    - Bug fixes and stability improvements

---
   Module Name:    pkgsrc
   Committed By:   jperkin
   Date:           Mon Sep 19 17:17:27 UTC 2016

   Modified Files:
           pkgsrc/chat/irssi-xmpp: Makefile

   Log Message:
   Use correct linker flags on Darwin.

---
   Module Name:    pkgsrc
   Committed By:   maya
   Date:           Wed Sep 21 20:53:57 UTC 2016

   Modified Files:
           pkgsrc/chat/irssi: Makefile.common PLIST distinfo
           pkgsrc/chat/irssi-icb: distinfo
           pkgsrc/chat/irssi-xmpp: Makefile distinfo

   Log Message:
   irssi: update to 0.8.20, security fix.

   catch up with irssi-icb, irssi-xmpp distinfo (they grab irssi versioned
   file).

   comment out part of irssi-xmpp makefile which is breaking the build.

   irssi 0.8.20 changes:

           - Correct the name of an emitted sasl signal (#484)
           - Correct the prototype for the 'message private' signal (#515)
           - Corrections in away and hilight help text (#477, #518)
           - /squery and /servlist commands have been restored.
           - Where Irssi would previously only report "System error" on connect,
             it will now try harder to retrieve the system error message.
           - Fixed issue with +channels not working properly (#533)
           - Fixed crash in optchan when item has no server (#485)
           - Fixed random remote crash in the nicklist handling (#529)
           - Fixed remote crash due to incorrect bounds checking on
             formats, reported by Gabriel Campana and Adrien Guinet from
             Quarkslab.

---
   Module Name:    pkgsrc
   Committed By:   jperkin
   Date:           Wed Sep 21 20:58:15 UTC 2016

   Modified Files:
           pkgsrc/chat/irssi-xmpp: Makefile

   Log Message:
   Fix Darwin subst.

---
   Module Name:    pkgsrc
   Committed By:   maya
   Date:           Thu Sep 22 09:07:08 UTC 2016

   Modified Files:
           pkgsrc/chat/irssi: Makefile distinfo
   Added Files:
           pkgsrc/chat/irssi/patches: patch-scripts_buf.pl

   Log Message:
   irssi: add patch for buf.pl update as it is shipped with irssi.

   previously it would create a world readable file containing chat
   logs when /upgrade was used.

   while a security fix, you have to jump through many hoops to be
   affected by it - we don't enable perl scripts by default, we
   don't run that perl script by default, and you'd have to know that
   /upgrade exists in the first place, and run on a system where world
   readability of files is a concern.

   still, grab upstream update, bump PKGREVISION.
wiedi pushed a commit to wiedi/pkgsrc-legacy that referenced this issue Nov 17, 2016
No changelog found.

github changes:
Merge pull request TritonDataCenter#52 from untitaker/generic-todo-prop-params
Merge pull request TritonDataCenter#51 from nim65s/master
Remove ansi dependency (TritonDataCenter#53)
Share parameters between new and edit
Add a move command
Fix editor support (TritonDataCenter#47)
Add a copy command (TritonDataCenter#50)
Merge pull request TritonDataCenter#46 from untitaker/no-delete-button
Replace cancel button with hint to hit ctrl-c
Remove delete button from editor
Exclude buggy setuptools-scm version
Show error messages in UI (TritonDataCenter#43)
delete cmd: Show tasks that will be deleted (TritonDataCenter#44)
Fix tests
done cmd: Show done tasks (TritonDataCenter#45)
Don't strip time from datetime objects (TritonDataCenter#41)
Add `default_list` in config for new todos (TritonDataCenter#40)
Add shortcut to edit textfield in editor (TritonDataCenter#39)
Merge pull request TritonDataCenter#6 from pimutils/widget-improvements
Add basic editing shortcuts to text widgets
Merge pull request TritonDataCenter#38 from untitaker/coc
Add CoC
Merge pull request TritonDataCenter#37 from untitaker/glob-clarify
Clarify what path is supposed to match
Don't require setuptool_scm at runtime
Fix inconsistent minimum todo ID
Merge pull request TritonDataCenter#30 from untitaker/color-option
Implement color option
Fix typo
jperkin pushed a commit that referenced this issue Nov 22, 2016
Upstream changes:
1.41   2016-11-16

- The DateTime->add and ->subtract methods now accept DateTime::Duration
  objects. This used to work by accident, but this is now done intentionally
  (with docs and tests). Based on PR #45 from Sam Kington.
jperkin pushed a commit that referenced this issue Jan 23, 2017
0.9.4

    improved PEP8 compliance (#53)
    improved Python 3 compatibility (#55)
    improved encoding/decoding (#49, #58) - thanks @pbiering!
    correct handling of pytz timezones (#45) - thanks @Achimh3011!

0.9.3

    Fixed use of doc in setup.py for -OO mode (#19) - thanks @dsanders11!
    Added python3 compatibility for base64 encoding (#21) - thanks @prauscher!
    Fixed ORG fields with multiple components (#23) - thanks @untitaker!
    Removed stray HTML entity in README (#26) - thanks @inglesp!
    Updated README.md to show example of adding "ORG" to a vCard (#28) - thanks @Tamerz!
    Handle pytz timezones in iCalendar serialization (#33) - thanks @medmunds!
    Use logging instead of printing to stdout (#35) - thanks @lucc!
jperkin pushed a commit that referenced this issue Feb 1, 2017
- Added http\Client\Curl\User interface for userland event loops
- Added http\Url::IGNORE_ERRORS, http\Url::SILENT_ERRORS and
  http\Url::STDFLAGS
- Added http\Client::setDebug(callable $debug)
- Added http\Client\Curl\FEATURES constants and namespace
- Added http\Client\Curl\VERSIONS constants and namespace
- Added share_cookies and share_ssl (libcurl >= 7.23.0) options to
  http\Client::configure()
- http\Client uses curl_share handles to properly share cookies and
  SSL/TLS sessions between requests
- Improved configure checks for default CA bundles
- Improved negotiation precision
- Fixed regression introduced by http\Params::PARSE_RFC5987:
  negotiation using the params parser would receive param keys without
  the trailing asterisk, stripped by http\Params::PARSE_RFC5987.
- Fix gh-issue #50: http\Client::dequeue() within
  http\Client::setDebug() causes segfault
- Fix gh-issue #47: http\Url: Null pointer deref in sanitize_value()
- Fix gh-issue #45: HTTP/2 response message parsing broken with
  libcurl >= 7.49.1
- Fix gh-issue #43: Joining query with empty original variable in
  query
- Fix gh-issue #42: fatal error when using punycode in URLs
- Fix gh-issue #41: Use curl_version_info_data.features when
  initializing options
- Fix gh-issue #40: determinde the SSL backend used by curl at runtime
- Fix gh-issue #39: Notice: http\Client::enqueue(): Could not set
  option proxy_service_name
- Fix gh-issue #38: Persistent curl handles: error code not properly
  reset
- Fix gh-issue #36: Unexpected cookies sent if persistent_handle_id is
  used
- Fix gh-issue #34: allow setting multiple headers with the same name
- Fix gh-issue #33: allow setting prodyhost request option to NULL
- Fix gh-issue #31: add/improve configure checks for default CA
  bundle/path

Changes from beta1:
- Fixed PHP-5.3 compatibility
- Fixed recursive calls to the event loop dispatcher

Changes from beta2:
- Fix bug #73055: crash in http\QueryString (CVE-2016-7398)
- Fix bug #73185: Buffer overflow in HTTP parse_hostinfo()
  (CVE-2016-7961)
- Fix HTTP/2 version parser for older libcurl versions
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants