Skip to content

Latest commit

 

History

History
316 lines (216 loc) · 8.58 KB

CHANGELOG.rst

File metadata and controls

316 lines (216 loc) · 8.58 KB

Changelog

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Full Changelog

Added

Fixed

  • Typos

Changed

  • Updated type annotations

Internal

  • Updated tox dependencies

0.3.0 (2019-04-16)

Full Changelog

Added

  • Added new analysis: signed area and unsigned area of the function across the x-range.
  • Docs for all public attributes of AnalyzedFunc.

Fixed

  • Handle multiple bad args passed to AnalyzedFunc.func.
  • Interval-finding no longer raises a StopIteration exception.

Changed

  • Improved performance of interval-finding, esp. for symmetry-finding.
  • Use Coordinate objects to represent extrema
    • AnalyzedFunc.absolute_maximum and AnalyzedFunc.absolute_minimum are now Coordinate instances
    • AnalyzedFunc.relative_maxima and AnalyzedFunc.relative_minima are numpy arrays of Coordinate objects.

Internal

  • Improve class cohesion for AnalyzedFunc and its parents.
    • Favor composition over inheritance in many places.
    • AnalyzedFunc now has 5 parents (down from 10).
    • Cohesion still sucks; still have a long way to go!
  • Move once-used functions from util.py to the submodules that use them.
  • Put all pairing logic in the functions make_pairs and make_intervals in the module func_analysis.interval_util, and make both functions generators.
  • Replace util.py with custom_types.py and interval_util.py.
  • Use reST formatting throughout the program.
  • Testing improvements:
    • Fix divide-by-0 error in test_other_analysis.test_zeroth_derivative_is_itself.
    • Fix some static analyzers missing some directories.

0.2.0 (2018-12-27)

Full Changelog

Summary

This update contains many breaking changes.

With adoption of wemake-python-styleguide came many stylistic improvements. The massive analysis_classes.py file has been split up, and much of the logic in __init__() methods now resides in properties.

Fixed

  • zeros_wanted, crits_wanted, and pois_wanted cannot be negative anymore.

Added

  • AnalyzedFunc.func_real and AnalyzedFunc.func_iterable are limited versions of AnalyzedFunc.func.

Changed

  • In AnalyzedFunc.__init__, rename parameters known_zeros, known_crits, and known_pois to zeros, crits, and pois.
  • Use more @property decorators.
    • Convert some attrs to properties in AnalyzedFunc:
      • x_range
      • derivatives
    • Convert some methods to properties in AnalyzedFunc. These no longer need empty double-parens:
      • rooted_first_derivative and rooted_second_derivative
      • vertical_axis_of_symmetry
      • increasing and decreasing
      • concave and convex
      • relative_maxima and relative_minima
      • absolute_maximum and absolute_minimum
  • The base version of AnalyzedFunc.func throws an error for unsupported types.
  • Better typing by subclassing NamedTuple:
    • Class Interval has fields start and stop. It’s the return type of:
      • x-range
      • increasing and decreasing
      • concave and convex
    • Class Coordinate has fields x_val and y_val. It will be used more in a future update.

Internal

  • Split analysis_classes into af_base, af_zeros, af_crits_pois, and analyzed_func.
  • Prefer the stdlib version of @singledispatchmethod
  • Testing improvements
    • Add tests to compare constructing AnalyzedFunc objects with/without known special points. Now at 100% test coverage!
    • Splitting large modules
      • Split tests.helper into tests.call_counting and tests.testing_utils.
      • Split test_zeros_crits_pois into test_zeros, test_pois, test_crits
      • Move extrema-testing from test_other_analysis to test_extrema.
      • Move all functions to analyze from conftest to funcs_to_analyze.
    • Linting: add wemake-python-styleguide and OpenStack’s hacking plugins to flake8
    • Rename long test methods
    • Count-calling that existed only to ensure that a call-count never went past 0 has been replaced by tests that forbid calling altogether.
  • Minor changes
    • Switch from os.path to pathlib.Path.
    • Switch from relative imports to absolute imports.
    • Stop numeric underscore normalization
    • Stop un-pythonic comparisons with zero
    • Stop separating numerals from letters with underscores.
    • Explicit object inheritance
    • Spelling

0.1.2 (2018-12-19)

Full Changelog

Summary

A bugfix in AnalyzedFunc and a ton of testing and pipeline improvements.

Fixed

  • Special point properties work correctly when no special points are wanted.

Added

  • More tests
    • Tests for AnalyzedFunc.concave and AnalyzedFunc.convex
    • Tests for memoization of AnalyzedFunc.func by monitoring call counts.
  • Pipeline additions
    • Upload coverage to Code Climate
    • Add xenon job to monitor code complexity

Changed

  • Testing improvements
    • Use fixtures to make all tests independent.
    • Massive cleanup of testing.test_util
    • More files covered by linters (fixed glob patterns).
    • Move helping functions and constants to tests.helpers and tests.constants.
    • Replace tests.test_all_analysis with tests.test_zeros_crits_pois, tests.test_intervals, and tests.test_other_analysis.
  • More consistent formatting.

0.1.1 (2018-12-17)

Full Changelog

Hotfix release identical to 0.1.0 because I accidentally uploaded the wrong file to PYPI.

0.1.0 (2018-12-17)

Full Changelog

Added

  • This changelog
  • Built-in test suite: python3 setup.py test runs unit tests
  • More badges to feed my badge addiction. More might come in the next version!

Changed

  • Now there is only one public class for analyzed functions: AnalyzedFunc. It has the same capabilities as FuncIntervals from v0.0.1
  • AnalyzedFunc.zeros, AnalyzedFunc.crits, and AnalyzedFunc.pois are properties instead of ordinary methods; don’t use empty parentheses on these anymore!
  • Project structure
    • func_analysis.func_analysis is now just func_analysis.
    • Predefined unit tests are in the submodule func_analysis.tests.test_all_analysis. More testing submodules under func_analysis.tests will come soon.

Fixed

  • Corrected (and expanded) type annotations.
  • The parameter known_zeros in AnalyzedFunc.__init__() is optional.

0.0.1 (2018-12-11)

Full Changelog

Initial release