3. Changelog

3.1. Unreleased

3.2. 3.0.0 - 2020-01-06

3.2.1. Added

  • Support and tests for Python 3.8
  • Text to highlight that fastnumbers is not always faster that native Python
  • on_fail option that is identical to key, but has a more descriptive name
  • Windows testing to Travis-CI
  • Code quality checks to Travis-CI
  • Deployment from Travis-CI
  • RELEASING.md

3.2.2. Changed

  • Cleaned up all test code so that it no longer includes unused code and also conformes to flake8/black
  • Near-complete re-write of the README, hopefully to make the functionality of fastnumbers clearer, to support better navigation, and to better highlight caveats.
  • Made all named options keyword-only except for default

3.2.3. Deprecated

  • key function (it will forever remain allowed, but is “hidden” and cannot be given with on_fail)

3.2.4. Fixed

  • Bug where the coerce option of real() was ignored
  • Improved testing reproducibility by pinning all test dependencies

3.2.5. Removed

  • Support for Python 2.7 and Python 3.4
  • Appveyor service

3.3. 2.2.1 - 2019-03-25

3.3.1. Fixed

  • Formatting docstring
  • Package metadata

3.4. 2.2.0 - 2019-03-24

3.4.1. Changed

  • Add allow_underscores option to toggle whether or not underscores are allowed inside numbers on Python >= 3.6
  • Update CHANGELOG format to style from https://keepachangelog.com/
  • Build system now uses pip in stead of pipenv (issue #22)
  • Simplify tox.ini file

3.5. 2.1.1 - 2018-08-19

3.5.1. Added

  • A high-level description of the fastnumbers algorithm in the documentation.

3.5.2. Fixed

  • Compile error on FreeBSD where fastnumbers’ "string.h" shadowed the system "string.h".

3.6. 2.1.0 - 2018-08-03

3.6.1. Changed

  • Speedup of conversions of ASCII-like unicode in Python 3.
  • Speedup of conversions for large integers and large floats - fastnumbers should now be at least as fast as built-in functions.
  • Restructure code base, hopefully improving simplicity.

3.6.2. Fixed

  • Bug in converting unicode numbers on Python 3.7.

3.7. 2.0.5 - 2018-07-01

3.7.1. Changed

  • Source files are sorted before compilation.

3.7.2. Fixed

  • Bug in fast_real that resulted in an OverflowError when given very large int-like floats.

3.8. 2.0.4 - 2018-05-18

3.8.1. Fixed

  • Install error on old versions of setuptools.

3.9. 2.0.3 - 2018-05-14

3.9.1. Added

3.9.2. Changed

  • Reorganized testing and development infrastructure.
  • Development dependencies are now defined using Pipfile.

3.10. 2.0.2 - 2017-11-11

3.10.1. Added

  • Added testing for Python 3.7.

3.10.2. Changed

  • Updated docstrings.
  • Improved timing documentation.

3.11. 2.0.1 - 2017-04-30

3.11.1. Fixed

  • Bug in decimal digit limit on GCC.

3.12. 2.0.0 - 2017-04-30

3.12.1. Added

  • Support for Python 3.6 underscores.
  • Drop-in replacements for the built-in int() and float() functions.
  • Appveyor testing to ensure no surprises on Windows.

3.12.2. Changes

  • Incorporated unit tests from Python’s testing library to ensure that any input that Python can handle will also be handled the same way by fastnumbers.
  • Revamped documentation.
  • Refactored internal mechanism for assessing overflow to be faster in the most common cases.

3.12.3. Removed

  • Dropped support for Python 2.6.

3.13. 1.0.0 - 2016-04-23

3.13.1. Changed

  • “coerce” in fast_real now applies to any input, not just numeric; the default is now True instead of False.
  • Now all ASCII whitespace characters are stripped by fastnumbers
  • Typechecking is now more forgiving
  • fastnumbers now checks for errors when converting between numeric types
  • Testing now includes Python 2.6.

3.13.2. Fixed

  • Bug where very small numbers are not converted properly
  • Unicode handling on Windows.
  • Python2.6 on Windows.

3.13.3. Removed

  • Removed safe_* functions (which were deprecated since version 0.3.0)

3.14. 0.7.4 - 2016-03-19

3.14.1. Added

  • The coerce option to fast_real.

3.15. 0.7.3 - 2016-03-08

3.15.1. Changed

  • Newline is now considered to be whitespace (for consistency with the builtin float and int).

3.16. 0.7.2 - 2016-03-07

3.16.1. Fixed

  • Overflow bug in exponential parts of floats.

3.17. 0.7.1 - 2016-02-29

3.17.1. Added

  • key function option to transform invalid input arguments.

3.17.2. Fixed

  • Compilation bug with MSVC.

3.18. 0.7.0 - 2016-01-18

3.18.1. Changed

  • Sped up functions by eliminating an unnecessary string copy.
  • Broke all functions into smaller components, eliminating a lot of duplication.
  • Improved documentation.

3.19. 0.6.2 - 2015-11-01

3.19.1. Fixed

  • Bug that caused a SystemError exception to be raised on Python 3.5 if a very large int was passed to the “fast” functions.

3.20. 0.6.1 - 2015-10-29

3.20.1. Added

  • tox.ini

3.20.2. Changed

  • Sped up unit testing.

3.20.3. Fixed

  • Segfault on Python 3.5 that seemed to be related to a change in the PyObject_CallMethod C function.

3.21. 0.6.0 - 2015-10-27

3.21.1. Added

  • The nan and inf options to fast_real and fast_float. These options allow alternate return values in the case of nan or inf, respectively.

3.21.2. Changed

  • Improved documentation.
  • Improved testing.

3.21.3. Fixed

  • Fixed issue where giving a default of None would be ignored.

3.22. 0.5.2 - 2015-06-11

3.22.1. Fixed

  • Compile error with Visual Studio compilers.

3.23. 0.5.1 - 2015-06-04

3.23.1. Changed

  • Made handling of Infinity and NaN for fast_int and fast_forceint consistent with the built-in int function.

3.23.2. Fixed

  • Solved rare segfault when parsing Unicode input.

3.24. 0.5.0 - 2015-05-12

3.24.1. Added

  • Added num_only option for checker functions.

3.24.2. Changed

  • Made default the first optional argument instead of raise_on_invalid\ for conversion functions.

3.25. 0.4.0 - 2015-05-03

3.25.1. Added

  • Support for conversion of single Unicode characters that represent numbers and digits.

3.26. 0.3.0 - 2015-04-23

3.26.1. Changed

  • Updated all unit testing to use the hypothesis module, which results in better test coverage.
  • Updated the fast_* functions to check if an overflow loss of precision has occurred, and if so fall back on the more accurate number conversion method.

3.26.2. Deprecated

  • In response to the above change, the safe_* functions are now deprecated, and internally now use the same code as the fast_* functions.

3.27. 0.2.0 - 2014-09-03

3.27.1. Added

  • A default option to the conversion functions.

3.28. 0.1.4 - 2014-08-12

3.28.1. Changed

  • The method to catch corner-cases like ‘.’, ‘+’, ‘e’, etc. has been reworked to be more general… case-by-case patches should no longer be needed.

3.28.2. Fixed

  • Bug where ‘.’ was incorrectly identified as a valid float/int and converted to 0. This bug only applied to the fast_* and is* functions.

3.29. 0.1.3 - 2014-08-12

3.29.1. Fixed

  • Bug where ‘e’ and ‘E’ were incorrectly identified as a valid float/int and converted to 0. This bug only applied to the fast_* and is* functions.

3.30. 0.1.2 - 2014-08-12

3.30.1. Fixed

  • Bug where ‘+’ and ‘-‘ were incorrectly identified as a valid float/int and converted to 0. This bug only applied to the fast_* and is* functions.
  • Bug where safe_forceint did not handle nan correctly.

3.31. 0.1.1 - 2014-08-11

3.31.1. Added

  • Support for inf and nan

3.32. 0.1.0 - 2014-08-10

  • Initial release of fastnumbers