All notable changes to this project will be documented in this file, and this project adheres to Semantic Versioning.
- Added structural pattern matching
- Fixed bug causing NumPy fixed-width integer overflows for large integers per #142
- Added group name to the report created by
generate_report
per #152 - Added display name to reference implementations per #141
- Added student-set initial conditions per #159
- Added complexity unions for combining complexity classes per #155
- Added a return value annotation per #144
- Updated the notebook execution template to use
FrameTracer
- Added the
RequireImport
andForbidImport
annotations per #123 - Added
TimeComplexityChecker
for analyzing complexity without annotations per #137 - Fixed annotation message filtering bug per #145
- Added
dataclasses
backport to required modules for Python < 3.7 - Added a
group
argument to thecheck
context manager per #146 - Moved named annotation filtering into
ReferenceImplementation
constructor per #147
- Fixed a bug that was causing floats to be added to the memory footprint prematurely per resulting in #125
- Refactored internal representation of memory footprints to create abstraction barriers
- Fixed bug in
Value
s trackingset
s of numbers - Fixed bug in timestamp comparison in
BeforeAnnotation
- Added
Value.check_against
andAttribute.check_agains
per #111 - Added custom equivalence functions for value annotations per #113
- Removed the messages section from reports with no messages
- Added debug mode per #116
- Fixed ipykernel v6 issue and unpinned ipykernel per #114
- Fixed bug in handling empty student implementations per #101
- Fixed - 'Empty iterable comparison' per #109
- Fixed - 'Tolerances for iterables' per #103
- Updated - 'Incorrect path on getting started doc' per #104
- Fixed 'Invalid usage of NoReturn' per #105
- Added customizable timeout to notebook execution* Changed the notebook execution template to use
pybryt.tracing_on
andpybryt.tracing_off
- Fixed
pybryt execute
output per #94
- Added function call tracking to trace function and student implementations
- Fixed bug for Markdown cells in
pybryt.StudentImplementation.errors
- Added tracking and warnings for errors in student notebook execution
- Added the
matrix_transpose
andlist_permutation
invariants - Fixed code tracing at top level in the
check
context manager - Added
pybryt.ReferenceImplementation.get
for looking up annotations by name
- Fixed bug in
Value
annotations regarding NaN values
- Added the
Collection
annotation
- Added the
ForbidType
annotation
- Added the context manager
pybryt.no_tracing
- Added caching to
pybryt.check
- Added scaffold for custom complexity classes
- Added time complexity annotations and checking
- Changed tracing function to only increment step counter when tracing student code
- Added relative tolerance to value annotations
- Fixed bug in intermediate variable preprocessor for newer versions of Python
- Added a context manager for checking code against a reference implementation from the same notebook
- Added a CLI for interacting with PyBryt
- Changed
pybryt.utils.save_notebook
to useIPython.display.publish_display_data
instead ofIPython.display.display
- Added tracing control with
pybryt.tracing_off
andpybryt.tracing_on
- Changed
pybryt.utils.save_notebook
to only force-save in the classic Jupyter Notebook interface - Added a JSON-friendly output for results with
pybryt.ReferenceResult.to_dict
- Added Cython and ipykernel to installation dependencies
- Patched bug in
UnassignedVarWrapper
from fix in v0.0.2
- Changed timestamp to step counter in execution trace function
- Fixed
UnassignedVarWrapper
so that variables in boolean operations are only evaluated when necessary
- Initial release