The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Typos
- Updated type annotations
- Updated tox dependencies
0.3.0 (2019-04-16)
- Added new analysis: signed area and unsigned area of the function across the x-range.
- Docs for all public attributes of
AnalyzedFunc.
- Handle multiple bad args passed to
AnalyzedFunc.func. - Interval-finding no longer raises a
StopIterationexception.
- Improved performance of interval-finding, esp. for symmetry-finding.
- Use
Coordinateobjects to represent extremaAnalyzedFunc.absolute_maximumandAnalyzedFunc.absolute_minimumare nowCoordinateinstancesAnalyzedFunc.relative_maximaandAnalyzedFunc.relative_minimaare numpy arrays ofCoordinateobjects.
- Improve class cohesion for
AnalyzedFuncand 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.pyto the submodules that use them. - Put all pairing logic in the functions
make_pairsandmake_intervalsin the modulefunc_analysis.interval_util, and make both functions generators. - Replace
util.pywithcustom_types.pyandinterval_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.
- Fix divide-by-0 error in
0.2.0 (2018-12-27)
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.
zeros_wanted,crits_wanted, andpois_wantedcannot be negative anymore.
AnalyzedFunc.func_realandAnalyzedFunc.func_iterableare limited versions of AnalyzedFunc.func.
- In
AnalyzedFunc.__init__, rename parametersknown_zeros,known_crits, andknown_poistozeros,crits, andpois. - Use more
@propertydecorators.- Convert some attrs to properties in
AnalyzedFunc:x_rangederivatives
- Convert some methods to properties in
AnalyzedFunc. These no longer need empty double-parens:rooted_first_derivativeandrooted_second_derivativevertical_axis_of_symmetryincreasinganddecreasingconcaveandconvexrelative_maximaandrelative_minimaabsolute_maximumandabsolute_minimum
- Convert some attrs to properties in
- The base version of
AnalyzedFunc.functhrows an error for unsupported types. - Better typing by subclassing
NamedTuple:- Class
Intervalhas fieldsstartandstop. It’s the return type of:x-rangeincreasinganddecreasingconcaveandconvex
- Class
Coordinatehas fieldsx_valandy_val. It will be used more in a future update.
- Class
- Split
analysis_classesintoaf_base,af_zeros,af_crits_pois, andanalyzed_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.helperintotests.call_countingandtests.testing_utils. - Split
test_zeros_crits_poisintotest_zeros,test_pois,test_crits - Move extrema-testing from
test_other_analysistotest_extrema. - Move all functions to analyze from
conftesttofuncs_to_analyze.
- Split
- Linting: add
wemake-python-styleguideand OpenStack’shackingplugins toflake8 - 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.pathtopathlib.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
- Switch from
0.1.2 (2018-12-19)
A bugfix in AnalyzedFunc and a ton of testing and pipeline improvements.
- Special point properties work correctly when no special points are wanted.
- More tests
- Tests for
AnalyzedFunc.concaveandAnalyzedFunc.convex - Tests for memoization of
AnalyzedFunc.funcby monitoring call counts.
- Tests for
- Pipeline additions
- Upload coverage to Code Climate
- Add xenon job to monitor code complexity
- 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.helpersandtests.constants. - Replace
tests.test_all_analysiswithtests.test_zeros_crits_pois,tests.test_intervals, andtests.test_other_analysis.
- More consistent formatting.
0.1.1 (2018-12-17)
Hotfix release identical to 0.1.0 because I accidentally uploaded the wrong file to PYPI.
0.1.0 (2018-12-17)
- This changelog
- Built-in test suite:
python3 setup.py testruns unit tests - More badges to feed my badge addiction. More might come in the next version!
- Now there is only one public class for analyzed functions:
AnalyzedFunc. It has the same capabilities asFuncIntervalsfrom v0.0.1 AnalyzedFunc.zeros,AnalyzedFunc.crits, andAnalyzedFunc.poisare properties instead of ordinary methods; don’t use empty parentheses on these anymore!- Project structure
func_analysis.func_analysisis now justfunc_analysis.- Predefined unit tests are in the submodule
func_analysis.tests.test_all_analysis. More testing submodules underfunc_analysis.testswill come soon.
- Corrected (and expanded) type annotations.
- The parameter
known_zerosinAnalyzedFunc.__init__()is optional.
0.0.1 (2018-12-11)
Initial release