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
StopIteration
exception.
- Improved performance of interval-finding, esp. for symmetry-finding.
- Use
Coordinate
objects to represent extremaAnalyzedFunc.absolute_maximum
andAnalyzedFunc.absolute_minimum
are nowCoordinate
instancesAnalyzedFunc.relative_maxima
andAnalyzedFunc.relative_minima
are numpy arrays ofCoordinate
objects.
- 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
andmake_intervals
in the modulefunc_analysis.interval_util
, and make both functions generators. - Replace
util.py
withcustom_types.py
andinterval_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_wanted
cannot be negative anymore.
AnalyzedFunc.func_real
andAnalyzedFunc.func_iterable
are limited versions of AnalyzedFunc.func.
- In
AnalyzedFunc.__init__
, rename parametersknown_zeros
,known_crits
, andknown_pois
tozeros
,crits
, andpois
. - 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
androoted_second_derivative
vertical_axis_of_symmetry
increasing
anddecreasing
concave
andconvex
relative_maxima
andrelative_minima
absolute_maximum
andabsolute_minimum
- Convert some attrs to properties in
- The base version of
AnalyzedFunc.func
throws an error for unsupported types. - Better typing by subclassing
NamedTuple
:- Class
Interval
has fieldsstart
andstop
. It’s the return type of:x-range
increasing
anddecreasing
concave
andconvex
- Class
Coordinate
has fieldsx_val
andy_val
. It will be used more in a future update.
- Class
- Split
analysis_classes
intoaf_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.helper
intotests.call_counting
andtests.testing_utils
. - Split
test_zeros_crits_pois
intotest_zeros
,test_pois
,test_crits
- Move extrema-testing from
test_other_analysis
totest_extrema
. - Move all functions to analyze from
conftest
tofuncs_to_analyze
.
- Split
- Linting: add
wemake-python-styleguide
and OpenStack’shacking
plugins 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.path
topathlib.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.concave
andAnalyzedFunc.convex
- Tests for memoization of
AnalyzedFunc.func
by 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.helpers
andtests.constants
. - Replace
tests.test_all_analysis
withtests.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 test
runs 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 asFuncIntervals
from v0.0.1 AnalyzedFunc.zeros
,AnalyzedFunc.crits
, andAnalyzedFunc.pois
are properties instead of ordinary methods; don’t use empty parentheses on these anymore!- Project structure
func_analysis.func_analysis
is now justfunc_analysis
.- Predefined unit tests are in the submodule
func_analysis.tests.test_all_analysis
. More testing submodules underfunc_analysis.tests
will come soon.
- Corrected (and expanded) type annotations.
- The parameter
known_zeros
inAnalyzedFunc.__init__()
is optional.
0.0.1 (2018-12-11)
Initial release