* sub_alphas is derived directly from to_update so they're guaranteed to be of the same length.
* self.shapes is initialised as a direct copy of the mobject, guaranteed to be of same length.
* linspace in this case guarantees both arrays are of equal size (self.n_segments).
* Any transformation already requires that each datapoint in the first tuple has a corresponding datapoint in the second (ie same length)
* Replaced arange with linspace, eliminates risk of floating point errors and forces rgbas and offset to be the same size for strict=True
* all_arc_configs is either defined specifically by length of point_pairs or strictly forced to be the same length (n). In any case they'll always be the same length so strict=True works.
* There should always be an equal amount of start and end anchors; radius_list is defined directly from the length of vertex_group; both outer_vertices and inner_vertices posess n vertices.
* boundary_times always contains has an even length so both 'slices' in the zup function are the same length.
* colors_in_gradient is defined to be the same length as p_list_complete; labels and parts are seemingly user inputs with no guarantee of equal length; val_range is defined to be same lenght as self.bar_names; however there's no authentication that self.values has a fixed length after it's been defined ie user can append to the list creating a mismatch between len(self.values) and len(self.bars)
* In most cases here, the tuples are either defined to be of same length or manipulated to be by the align_data function. In the match_points function there is currently no validation to ensure both mobjects are the same length.
* Reverting _add_x_axis_labels() zip() function back
to strict=False due to failing test cases
* Reverted strict zip usage
* color_gradient is defined to be same length as p_list_complete & within _add_x_axis_labels we define val_range to be the same length as self.bar_names
* align_data and lock_matching_data have no validation to ensure tuples in the zip() function are of the same length. Every other time zip() is used here it is generally immediately manipulating or explicitly defining the tuples to be of same length
* All tuples in zip() functions here are either clearly the same size or manipulated to be the same size using the make_even function.
* The tuples in the zip() function will clearly be of equal length, the second tuple is simply a cyclic shift of the first.
* In the ingest_submobjects function arrays is a one to one mapping of attrs so they are guaranteed to have equal lengths.
* Every usage of zip() consists of tuples that are either manipulated to be equal size or defined to be equal size.
* the zip() function in bezier_remap will always consist of equal length tuples as current_number_of_curves is read directly from the shape of bezier_tuples and is used to dictate the size of split_factors.
* The zip() function color_gradient() will always consist of equal length tuples as floors is defined directly from alphas (which also defines alphas_mod1)
* The tuples in the zip() function in adjacent_n_tuples will always be the same length so strict=True.
* The find_intersection() contains a zip() function that has been set to strict=True. While it is technically possible to pass tuples to this function that are *not* the same length, this would result in generally unexpected behaviour anyway.
* Changed zip() function to have strict=True in __init__() as custom_labels is dependent on tick_range so guaranteed to have the same length.
* Several instances of zip() set to strict=True. In add_coordinates we have axis manipulated to be the same length as tick_range. In get_riemann_rectangles() we have colors dependent on of x_range_Array forcing them to be the same length. Finally in plot_line_graph() it is clearly intended that all inputs used in the zip() function are of the same length (except possibly z which may not exist and will be made equal length to x); while it is not guaranteed they will be the same length this would cause unintended behaviour.
* zip() function bool changed to strict=True in all these test cases. Most test cases either a) hardcode two things to be the same length, b) verify things are the same length before the function or c) explicitly exist to check whether two things are the same length.
* Fix polygon inside/outside logic for edge cases
* Stop using hardcoded values and improve variable naming
* Decompose inside/outside logic into smaller functions
Improves readability and maintanance.
* Improve test readability
* Fix polylabel test logic
* Fix polylabel test by adding multiple options of pole
* Improve docstring description of argument
* Stop checking type checking blocks on coverage
* Fix OpenGLMobject methods doctests
* Converted types in docstrings to type annotations
* `isort .`
* `black .`
* Additional docstrings type annotation fixes
Co-authored-by: Benjamin Hackl <devel@benjamin-hackl.at>
* Migrate more `os.path` to `pathlib` in tests
* Convert test fixtures to pathlib
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* fix mypy errors in tests
* migrate another pathlib instance
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Hackl <devel@benjamin-hackl.at>
* Remove unused imports
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Removed non pytest imports from tests
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Remove unused pytest imports
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* re-added removed pass statements
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Benjamin Hackl <devel@benjamin-hackl.at>
* Future Annotations
* Delete template_twitter_post.py
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Apply suggestions from code review
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Fixed broken RTD
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* feat: added section class
* fix: fixed imports in scene.py
* feat: added section class
* fix: fixed imports in scene.py
* feat: scene file writer update; needs testing
* broken test
* fixed wrong partial movie files
* feat: added animation concatenation for sections
* fix: sections can contains None as partial movie file
* fix: correct section output file names
* fix: removed media folder
* feat: section output able to extract type
* feat: added guarantee_existence tests
* fix: touch file on windows
* fix: touch file on windows
* feat: automatically create control data with --set_test flag
* feat: added tests for sections output folder
* feat: added flag to enable sections
* feat: testing section metadata file
* feat: finished metadata tests; changed enums to be extendable
* fix: removed testing files
* fix: fixed section types
* fix: fixed outdated control data
* fix: fixed simple_scenes.py
* fix: fixed section type documentation example
* feat: added section video metadata to API
* fix: isort should stop destroying the import order for commands.py
* fix: fixed types of section metadata output
* fix: better comments
* ?
* feat: added elaborate test; switched name and type in next_section call
* feat: changed testing terminology: "config" got renamed to "movie metadata"
* fix: removed unicode lambda :<
* fix: fixed control data
* fix: removed test setter
* feat: added tutorial in the documentation
* fix: updated test control data
* fix: fixed double '.' in video tests
* fix: fixed some documentation
* fix: fixed missign JSON file in docs
* fix: implemented proposed changes
* fix: better --save_sections help
* fix: better docstrings
* fix: fixed last docstring...hopefully :>
* feat: custom section output supported
* fix: removed resolved todos
* fix: added debug for movie concatenation back
* fix: removed implemented TODO
* fix: removed doubled log
* fix: changed debug to info log
* fix: fixed log test data
* Upgrade to modern Python syntax
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Added click dependency and command structure
* Refactored code for separation of concerns
* Shortened plugins command to plugin, added render options
* first draft for render -h
* First successful render using click
* Cleaned main
* Moved flush_cache to option, ran black
* Removed argparse logic, scattered print statements
* corrected tests, all passing
* merge upstream
* fixed test with click's clirunner
* Fixed doctest configuration.rst
* Temporarily add in main_utils
* Removed main_utils.parse_args, used ManimConfig.digest_args
* fixed progress bar
* Fix jupyter
* black
* Fixed incorrectly merged merge conflict
* updated README command.png image
* updated configuration.rst expected output
* Fixed test_plugins and config_file expected type
* Refixed the jupyter fix
* Apply 3/5 suggestions
Remove stray print
Improve readability of test code
Added module docs for the subcommands
* Updated `main` to `manim` for tests
* Forced `file` positional argument to be Path type
* Fixed main -> manim
* Added libpango to linux dependency
* Updated poetry.lock
* Changed configuration.rst test
* Fixed test_a_flag test
minor space issue
added media_width to configuration.rst
* Fixed fps flag in Cairo rendering
* Fixed more outdated rst in sphinx docs
Removed default for fps option, always overwrote quality
Fixed doctest control_data
* Fixed more incorrect rst orderings
* Update tests/test_commands.py
Co-authored-by: Naveen M K <naveen@syrusdark.website>
* Added suggestions
* Removed unused imports
* Reverted entry point back to main
* Update manim/_config/default.cfg
Co-authored-by: Benjamin Hackl <devel@benjamin-hackl.at>
* Adjusted ipython_magic's call to the entry_point
* Converted frame_rate to int if integer
* run black
* Fixed doctest
* Fixed issue with command name from CliRunner
* Fixed multiple video windows opening from upstream merge
* to black or not to black
* Added deprecation warning to render subcommand
* warning instead of warn
* Applied Naveen's suggestions
* Made `manim render` show the help page
* Update manim/cli/render/commands.py
Co-authored-by: Naveen M K <naveen@syrusdark.website>
* Update manim/cli/cfg/commands.py
Co-authored-by: Naveen M K <naveen@syrusdark.website>
* Update manim/cli/cfg/commands.py
Co-authored-by: Naveen M K <naveen@syrusdark.website>
* Update manim/cli/plugins/commands.py
Co-authored-by: Naveen M K <naveen@syrusdark.website>
* Addressed some style changes
* add back in write_to_movie temporarily for OpenGL support
* Removed sound flag, deprecated use_opengl_renderer, added renderer option
* revert webgl_renderer_path removal
* Fixed cfg export
Fixed readme usage of CLI
* Flake8/black
* Fixed bug in setting renderer choice
* Removed log message due to default option
Removed default option of background color
Fixed write_to_movie flag default
* Fix log_to_file tests
* Make '-c' option for config_file, not background_color
* print colored version always
* Remove -v = --version shorthand, conflicts with verbosity
* Use subprocess.run instead of Click's CliRunner for stdout
* Refactor cli/render to use Cloup instead of click-option-group
1) There's a new file for each option group
2) render is now a cloup.Command, not a Group
Fixed issue when an animation is cached, manim can't merge the partial movie files. (#1192)
* fixed issue
* fixed tests
* Update manim/renderer/cairo_renderer.py
Co-authored-by: Darylgolden <darylgolden@gmail.com>
* added tests
* imrpoved test
* fixed logic
* added new test
* check if the file has been outputed
* added test when caching is enabled
* fixed tests on windows
* black
* Update manim/renderer/cairo_renderer.py
Co-authored-by: Naveen M K <naveen@syrusdark.website>
* Update tests/assert_utils.py
Co-authored-by: Naveen M K <naveen@syrusdark.website>
Co-authored-by: KingWampy <9156604+WampyCakes@users.noreply.github.com>
Co-authored-by: Darylgolden <darylgolden@gmail.com>
Co-authored-by: Naveen M K <naveen@syrusdark.website>
Added :ref_methods: to the manim directive (#1209)
* fix manim_directive for methods
* added ref_methods to Angle example
* black
* added new ref_methods references
* sort out ref_functions vs ref_methods in examples.rst
Co-authored-by: Jason Villanueva <a@jsonvillanueva.com>
Co-authored-by: Benjamin Hackl <devel@benjamin-hackl.at>
Fixed issue when an animation is cached, manim can't merge the partial movie files. (#1192)
* fixed issue
* fixed tests
* Update manim/renderer/cairo_renderer.py
Co-authored-by: Darylgolden <darylgolden@gmail.com>
* added tests
* imrpoved test
* fixed logic
* added new test
* check if the file has been outputed
* added test when caching is enabled
* fixed tests on windows
* black
* Update manim/renderer/cairo_renderer.py
Co-authored-by: Naveen M K <naveen@syrusdark.website>
* Update tests/assert_utils.py
Co-authored-by: Naveen M K <naveen@syrusdark.website>
Co-authored-by: KingWampy <9156604+WampyCakes@users.noreply.github.com>
Co-authored-by: Darylgolden <darylgolden@gmail.com>
Co-authored-by: Naveen M K <naveen@syrusdark.website>
Added :ref_methods: to the manim directive (#1209)
* fix manim_directive for methods
* added ref_methods to Angle example
* black
* added new ref_methods references
* sort out ref_functions vs ref_methods in examples.rst
Co-authored-by: Jason Villanueva <a@jsonvillanueva.com>
Co-authored-by: Benjamin Hackl <devel@benjamin-hackl.at>
Fixed unnecessary args dict
* Fixed bug that changed caching hashing result
* Revert doctest logic for fps filename output
Co-authored-by: Naveen M K <naveen@syrusdark.website>
Co-authored-by: Benjamin Hackl <devel@benjamin-hackl.at>
Co-authored-by: Gianluca Gippetto <gianluca.gippetto@gmail.com>
* add simple circle test for opengl
* literally a comma
* add rgb tolerance to graphical unit tester
* start up xvfb on ubuntu?
* black style
* reduce tolerance to pixel ?
* add msys2 action
* add mesa install
* ci: windows add msys2 to path
Compile moderngl from source
add a init tests for CI to work
add colour to pytest
* minor edits
* mild refactor of scene / camera / renderer relationship
* flake-d
* reverted refactor
* reverted opengl split at the level of graphical unit tester
* remove unnecessary config in definition
* CI: remove python3 from MSYS2 also
Co-authored-by: Naveen M K <naveen@syrusdark.website>
* Exemption from absolute filepath if filename is -
* Comment why filepath is not made absolute if - is filename.
* Add a test for `-` as filename feature.
* Fix typo
* Use subprocess instead of echo and pipe for test.
* Run black
* Removed unused shell mode argument.
* Automatically import Plugins
Specify plugins using CLI and config file
Signed-off-by: Naveen M K <naveen@syrusdark.website>
* Fix Doc tests
* clean manim.cfg
* Add more explanatory docs
* add info about plugins site
* use property method
Co-authored-by: friedkeenan <friedkeenan@protonmail.com>
* use types module and f-strings
* Add tests
* lint
* remove --plugins
it seems it is not possible currently to implement that
* fix doc tests
* don't define unnecessary variables
* Apply suggestions from code review
Co-authored-by: Leo Torres <dleonardotn@gmail.com>
Co-authored-by: friedkeenan <friedkeenan@protonmail.com>
Co-authored-by: Leo Torres <dleonardotn@gmail.com>
* Changing old str.format() to f-Strings
* Fixed mistake
* Line too long
* str(...) is not needed in f-string
Co-authored-by: Benjamin Hackl <devel@benjamin-hackl.at>
Co-authored-by: Benjamin Hackl <devel@benjamin-hackl.at>
* Refactored file architecture of graphical tests
* removed tests_cache now useless
* added show_diff helper flag
* updated test data for TextMobjecttest
* refactored set_test_scene
* removed useless imports
* added video comparison tools
* improved tests helpers for devs
* added small video tests (provisionnal)
* small changes and cleanup
* RUN BLACK SIR YES SIR
* removed unused imports
* improved docs
* Apply suggestions from code review
Co-authored-by: Leo Torres <dleonardotn@gmail.com>
* updated tests from master.
* RUN BLACK SIR YES SIR
* fixed logging tests
* fixed test name
* rgb(0,0,0)
* fixed tests
* changed .npy data to fix test (hopefully)
* removed bad control data.
* aaand re added control data
* Regenerate Reference data for TextMobject and Text tests.
* Turn off fast-failing to see if tests pass anywhere
* Use shell mode for logging test.
(Fixes the failing logging test)
* Merge branch 'master' into refactor-tests
* Add OS Specific control data for Tex[t] tests on MacOS, Windows
* Use old TextMobject reference data.
* Add reference data for Linux.
* Use reference data from Ubuntu for Linux tests.
* Use @CorvidCanine's Text data and @leotrs's Tex[t]Mobject data.
* removed hash comparison in video tests.
* updated control data
* updated helpers
* removed useless comment
* removed test_writing
* updated tests
* renamed tests
* fixed tests
* Re-add fail-fast
* Apply suggestions from code review
Co-authored-by: Pg Biel <9021226+PgBiel@users.noreply.github.com>
* small docs mistake
* Update tests/utils/video_tester.py
Co-authored-by: Pg Biel <9021226+PgBiel@users.noreply.github.com>
Co-authored-by: Leo Torres <dleonardotn@gmail.com>
Co-authored-by: Aathish Sivasubrahmanian <aathish04@gmail.com>
Co-authored-by: Hugues Devimeux <hugues.devimeux@gmail.com>
Co-authored-by: Pg Biel <9021226+PgBiel@users.noreply.github.com>