Skip to content

Commit

Permalink
chore(ci): checking links and spell checking (#417)
Browse files Browse the repository at this point in the history
* chore(ci): checking links and spell checking

* chore(ci): move markdown-link-check to GitHub ci

Because pre-commit.ci does not have access to the internet...

* fix(lib): revert `reverse-...` utils because of warnings

* chore(ci): checking links and spell checking

* chore(ci): move markdown-link-check to GitHub ci

Because pre-commit.ci does not have access to the internet...

* fix(docs): myst-parser xref cannot end with .html

* fix(docs): oops
  • Loading branch information
jeertmans authored Apr 17, 2024
1 parent 4e7abe8 commit 04bca45
Show file tree
Hide file tree
Showing 24 changed files with 134 additions and 44 deletions.
2 changes: 1 addition & 1 deletion .bumpversion.cfg
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[bumpversion]
current_version = 5.1.4
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(-rc(?P<release>\d+))?
serialize =
serialize =
{major}.{minor}.{patch}-rc{release}
{major}.{minor}.{patch}
commit = True
Expand Down
27 changes: 27 additions & 0 deletions .github/scripts/check_github_issues.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
"""Check that GitHub issues (and PR) links match the number in Markdown link."""

import glob
import re
import sys

if __name__ == "__main__":
p = re.compile(
r"\[#(?P<number1>[0-9]+)\]"
r"\(https://github\.com/"
r"(?:[a-zA-Z0-9_-]+)/(?:[a-zA-Z0-9_-]+)/"
r"(?:(?:issues)|(?:pull))/(?P<number2>[0-9]+)\)"
)

ret_code = 0

for glob_pattern in sys.argv[1:]:
for file in glob.glob(glob_pattern, recursive=True):
with open(file) as f:
for i, line in enumerate(f):
for m in p.finditer(line):
if m.group("number1") != m.group("number2"):
start, end = m.span()
print(f"{file}:{i}: ", line[start:end], file=sys.stderr) # noqa: T201
ret_code = 1

sys.exit(ret_code)
15 changes: 14 additions & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ jobs:
if: matrix.os == 'windows-latest'
run: echo "${HOME}/.local/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append

# OS depedencies
# OS dependencies
- name: Install manim dependencies on MacOS
if: matrix.os == 'macos-latest'
run: brew install ffmpeg py3cairo
Expand Down Expand Up @@ -86,3 +86,16 @@ jobs:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
fail_ci_if_error: true

markdown-link-check:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Check links
uses: gaurav-nelson/github-action-markdown-link-check@v1
with:
use-quiet-mode: yes
use-verbose-mode: yes
config-file: .mdlc.json
8 changes: 8 additions & 0 deletions .mdlc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"replacementPatterns": [
{
"pattern": "^/(?<path>.*)$",
"replacement": "https://eertmans.be/manim-slides/latest/$<path>.html"
}
]
}
14 changes: 14 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,17 @@ repos:
hooks:
- id: mypy
additional_dependencies: [types-requests, types-setuptools]
- repo: https://github.com/codespell-project/codespell
rev: v2.2.6
hooks:
- id: codespell
additional_dependencies:
- tomli
- repo: local
hooks:
- id: github-issues
name: GitHub issues link check
description: Check issues (and PR) links are matching number.
entry: python .github/scripts/check_github_issues.py
language: system
types: [markdown]
8 changes: 7 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
(unreleased)=
## [Unreleased](https://github.com/jeertmans/manim-slides/compare/v5.1.4...HEAD)

(unreleased-chore)=
### Chore

- Added CI for broken HTML links and fixed, plus spell checking.
[#417](https://github.com/jeertmans/manim-slides/pull/417)


(v5.1.4)=
## [v5.1.4](https://github.com/jeertmans/manim-slides/compare/v5.1.3...v5.1.4)
Expand Down Expand Up @@ -191,7 +197,7 @@ In an effort to better document changes, this CHANGELOG document is now created.
but the new player should be much easier to maintain and more performant,
than its predecessor.
[#243](https://github.com/jeertmans/manim-slides/pull/243)
- Changed the slide config format to exclude unecessary information.
- Changed the slide config format to exclude unnecessary information.
`StypeType` is removed in favor to one boolean `loop` field. This is
a **breaking change** and one should re-render the slides to apply changes.
[#243](https://github.com/jeertmans/manim-slides/pull/243)
Expand Down
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,15 +49,15 @@ for detailed install instructions.
Using Manim Slides is a two-step process:
1. Render animations using `Slide` (resp. `ThreeDSlide`) as a base class instead
of `Scene` (resp. `ThreeDScene`), and add calls to `self.next_slide()`
everytime you want to create a new slide.
every time you want to create a new slide.
2. Run `manim-slides` on rendered animations and display them like a
*PowerPoint* presentation.

The documentation is available [online](https://eertmans.be/manim-slides/).

### Basic Example

Call `self.next_slide()` everytime you want to create a pause between
Call `self.next_slide()` every time you want to create a pause between
animations, and `self.next_slide(loop=True)` if you want the next slide to loop
over animations until the user presses continue:

Expand Down Expand Up @@ -118,7 +118,7 @@ manim-slides BasicExample
</p>

For detailed usage documentation, run `manim-slides --help`, or go to the
[documentation](https://eertmans.be/manim-slides/reference/cli.html).
[documentation](https://eertmans.be/manim-slides/latest/reference/cli.html).

## Interactive Tutorial

Expand Down Expand Up @@ -170,7 +170,7 @@ in *Settings*->*Display*.
## Contributing

Contributions are more than welcome! Please read through
[our contributing section](https://eertmans.be/manim-slides/contributing/index.html).
[our contributing section](https://eertmans.be/manim-slides/latest/contributing/index.html).

### Reporting an Issue

Expand Down
2 changes: 1 addition & 1 deletion docs/source/_static/template.html
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,7 @@
mouseWheel: {{ mouse_wheel }},

// Opens links in an iframe preview overlay
// Add `data-preview-link` and `data-preview-link="false"` to customise each link
// Add `data-preview-link` and `data-preview-link="false"` to customize each link
// individually
previewLinks: {{ preview_links }},

Expand Down
4 changes: 2 additions & 2 deletions docs/source/contributing/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ workflow
internals
```

[Workflow](./workflow)
[Workflow](/contributing/workflow)
: how to work on this project. Start here if you're a new contributor.

[Internals](./internals)
[Internals](/contributing/internals)
: how Manim Slides is built and how the various parts of it work.

## Reporting an Issue
Expand Down
8 changes: 5 additions & 3 deletions docs/source/contributing/workflow.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ Useful links:
* [GitHub's Hello World](https://docs.github.com/en/get-started/quickstart/hello-world).
* [GitHub Pull Request in 100 Seconds](https://www.youtube.com/watch?v=8lGpZkjnkt4&ab_channel=Fireship).

Once you feel comfortable with git and GitHub, [fork](https://github.com/jeertmans/manim-slides/fork) the repository, and clone it locally.
Once you feel comfortable with git and GitHub,
[fork](https://github.com/jeertmans/manim-slides/fork)
the repository, and clone it locally.

As for every Python project, using virtual environment is recommended to avoid
conflicts between modules.
Expand All @@ -36,7 +38,7 @@ pdm install
This, however, only installs the minimal set of dependencies to run the package.

If you would like to install Manim or ManimGL,
as documented in the [quickstart](../quickstart),
as documented in the [quickstart](/quickstart),
you can use the `-G|--group` option:

```bash
Expand All @@ -45,7 +47,7 @@ pdm install -Gmanim # For Manim
pdm install -Gmanimgl # For ManimGL
```

Additionnally, Manim Slides comes with groups of dependencies for development purposes:
Additionally, Manim Slides comes with groups of dependencies for development purposes:

```bash
pdm install -Gdev # For linters and formatters
Expand Down
2 changes: 1 addition & 1 deletion docs/source/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ og:description: Manim Slides makes creating slides with Manim super easy!

Manim Slides makes creating slides with Manim super easy!

In a [very few steps](./quickstart),
In a [very few steps](/quickstart),
you can create slides and present them either using the GUI, or your browser.

Slide through the demo below to get a quick glimpse on what you can do with
Expand Down
9 changes: 6 additions & 3 deletions docs/source/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ The benefit of using pipx is that it will automatically create a new virtual
environment for every package you install.

:::{note}
Everytime you read `pipx install`, you can use `pip install` instead,
Every time you read `pipx install`, you can use `pip install` instead,
if you are working in a virtual environment or else.
:::

Expand Down Expand Up @@ -146,23 +146,26 @@ If you are using Nix or NixOS, you can find Manim Slides under:
any Qt bindings.

You can try out the Manim Slides package with

```sh
nix-shell -p manim ffmpeg manim-slides
```

or by adding it to your
[configuration file](https://nixos.org/manual/nixos/stable/#sec-package-management).

Alternatively, you can try Manim Slides in a Python environment with:

```sh
nix-shell -p manim ffmpeg "python3.withPackages(ps: with ps; [ manim-slides, ...])"
```

or bundle this into [your Nix environment](https://wiki.nixos.org/wiki/Python).

:::{note}
Nix current does not support `manimgl`.
:::


## When you need a Qt backend

Before `v5.1`, Manim Slides automatically included PySide6 as
Expand All @@ -182,5 +185,5 @@ install those are via optional dependencies, as explained above.

An alternative way to install Manim Slides is to clone the git repository,
and build the package from source. Read the
[contributing guide](./contributing/workflow)
[contributing guide](/contributing/workflow)
to know how to process.
5 changes: 3 additions & 2 deletions docs/source/quickstart.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Quickstart

If not already, install Manim Slides, along with either Manim or ManimGL,
see [installation](./installation).
see [installation](/installation).

## Creating your first slides

Expand Down Expand Up @@ -31,4 +31,5 @@ The output slides should look this this:
:quality: high
```

For more advanced examples, see the [Examples](reference/examples) section.
For more advanced examples,
see the [Examples](/reference/examples) section.
5 changes: 3 additions & 2 deletions docs/source/reference/gui.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

Manim Slides' graphical user interface (GUI) is the *de facto* way to present slides.

If you do not specify one of the commands listed in the [CLI reference](./cli),
If you do not specify one of the commands listed in the
[CLI reference](/reference/cli),
Manim Slides will use **present** by default, which launches a GUI window,
playing your scene(s) like so:

Expand All @@ -25,7 +26,7 @@ directory, you should not worry about that :-)
## Configuration File

It is possible to configure Manim Slides via a configuration file, even though
this feature is currently limited. You may initiliaze the default configuration
this feature is currently limited. You may initialize the default configuration
file with:

```bash
Expand Down
4 changes: 2 additions & 2 deletions docs/source/reference/html.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,11 @@ manim-slides convert --show-config
## Using a Custom Template

The default template used for HTML conversion can be found on
[GitHub](https://github.com/jeertmans/manim-slides/blob/main/manim_slides/data/revealjs_template.html)
[GitHub](https://github.com/jeertmans/manim-slides/blob/main/manim_slides/templates/revealjs.html)
or printed with the `--show-template` option.
If you wish to use another template, you can do so with the
`--use-template FILE` option.

## More about HTML Slides

You can read more about HTML slides in the [sharing](./sharing) section.
You can read more about HTML slides in the [sharing](/reference/sharing) section.
18 changes: 9 additions & 9 deletions docs/source/reference/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,23 @@ sharing
Sphinx Extension <sphinx_extension>
```

[Application Programming Interface](./api): list of classes and methods that may
[Application Programming Interface](/reference/api): list of classes and methods that may
be useful to the end-user.

[Command Line Interface](./cli): list of all commands available using Manim
[Command Line Interface](/reference/cli): list of all commands available using Manim
Slides' executable.

[Examples](./examples): curated list of examples and their output.
[Examples](/reference/examples): curated list of examples and their output.

[Graphical User Interface](./gui): details about the main Manim Slide' feature.
[Graphical User Interface](/reference/gui): details about the main Manim Slide' feature.

[HTML Presentation](./html): an alternative way of presenting your animations.
[HTML Presentation](/reference/html): an alternative way of presenting your animations.

[IPython Magic](./ipython_magic): a magic to render and display Manim Slides inside notebooks.
[IPython Magic](/reference/ipython_magic): a magic to render and display Manim Slides inside notebooks.

+ [Example](./magic_example): example notebook using the magics.
+ [Example](/reference/magic_example): example notebook using the magics.

[Sharing](./sharing): how to share your presentation with others.
[Sharing](/reference/sharing): how to share your presentation with others.


[Sphinx Extension](./sphinx_extension): a Sphinx extension for diplaying Manim Slides animations within your documentation.
[Sphinx Extension](/reference/sphinx_extension): a Sphinx extension for displaying Manim Slides animations within your documentation.
9 changes: 7 additions & 2 deletions docs/source/reference/sharing.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,10 +126,15 @@ to use an `iframe`:
</div>
```

<!-- markdown-link-check-disable -->
<!-- see why: https://github.com/tcort/markdown-link-check/discussions/189 -->

The additional code comes from
[this article](https://faq.dailymotion.com/hc/en-us/articles/360022841393-How-to-preserve-the-player-aspect-ratio-on-a-responsive-page)
and it there to preserve the original aspect ratio (16:9).

<!-- markdown-link-check-enable -->

### Sharing ONE HTML file

If you set the `data_uri` option to `true` (with `-cdata_uri=true`),
Expand All @@ -142,8 +147,8 @@ HTML conversion makes it convenient to play your presentation on a
remote server.

This is how your are able to watch all the examples on this website. If you want
to know how to share your slide with GitHub pages, see the
[workflow file](https://github.com/jeertmans/manim-slides/blob/main/.github/workflows/pages.yml).
to know how to share your slide with GitHub pages, check out the
[Manim Slides Starter GitHub repository template](https://github.com/jeertmans/manim-slides-starter).

:::{warning}
Keep in mind that playing large video files over the internet network
Expand Down
6 changes: 5 additions & 1 deletion manim_slides/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,11 @@ def start_animation_is_before_end(
if pre_slide_config.start_animation >= pre_slide_config.end_animation:
if pre_slide_config.start_animation == pre_slide_config.end_animation == 0:
raise ValueError(
"You have to play at least one animation (e.g., `self.wait()`) before pausing. If you want to start paused, use the approriate command-line option when presenting. IMPORTANT: when using ManimGL, `self.wait()` is not considered to be an animation, so prefer to directly use `self.play(...)`."
"You have to play at least one animation (e.g., `self.wait()`) "
"before pausing. If you want to start paused, use the appropriate "
"command-line option when presenting. "
"IMPORTANT: when using ManimGL, `self.wait()` is not considered "
"to be an animation, so prefer to directly use `self.play(...)`."
)

raise ValueError(
Expand Down
4 changes: 2 additions & 2 deletions manim_slides/convert.py
Original file line number Diff line number Diff line change
Expand Up @@ -631,7 +631,7 @@ def callback(ctx: Context, param: Parameter, value: bool) -> None:
"--open",
"open_result",
is_flag=True,
help="Open the newly created file using the approriate application.",
help="Open the newly created file using the appropriate application.",
)
@click.option("-f", "--force", is_flag=True, help="Overwrite any existing file.")
@click.option(
Expand Down Expand Up @@ -695,7 +695,7 @@ def convert(
errors = e.errors()

msg = [
f"{len(errors)} error(s) occured with configuration options for '{to}', see below."
f"{len(errors)} error(s) occurred with configuration options for '{to}', see below."
]

for error in errors:
Expand Down
Loading

0 comments on commit 04bca45

Please sign in to comment.