Commit Graph

1820 Commits

Author SHA1 Message Date
Oleh Prypin
ec7eee6ce3 Release 1.4.2 (#3032) 1.4.2 2022-11-01 19:23:29 +01:00
Oleh Prypin
c99ec45a32 Support multiple instances of the same plugin (#3027)
Depending on what a plugin does, say if it "adds a thing" into the site, it can be reasonable to allow it to be specified multiple times in the `plugins:` list, so it can "add multiple things". Previously such a use case was completely not predicted in MkDocs, so it silently passes but is bugged - the plugin runs twice but with only one of the configs both times.

So, this commit addresses that by registering a plugin `- foo:` as `'foo'`, and then if another plugin `- foo:` appears, it gets registered as `'foo #2'` (the name affects primarily just how it's referred to in warnings and errors).

By default, a warning will appear from MkDocs anyway, unless the plugin adds a class variable `supports_multiple_instances = True`.
2022-11-01 18:53:43 +01:00
Oleh Prypin
452c39eae2 Chore dependency upgrade 2022-10-29 22:44:38 +02:00
pcgaustad
f190c35a99 Translate mkdocs theme to Norwegian (nb and nn) (#3024) 2022-10-29 14:55:02 +02:00
Oleh Prypin
c576f07d30 Declare support for Python 3.11 (#3020) 2022-10-29 14:48:00 +02:00
Oleh Prypin
32359f3e93 Relative links end with slash even for homepage links (#3022)
Fixes #3015
2022-10-29 14:41:50 +02:00
Oleh Prypin
1fa2af7926 Expand type checking coverage (#3019) 2022-10-25 21:59:30 +02:00
Oleh Prypin
d76cae9059 Merge pull request #3016 from mkdocs/optw
Update warnings of config options
2022-10-23 17:57:29 +02:00
Oleh Prypin
9d73c2a824 Reduce redundancy in config errors/warnings 2022-10-21 22:29:42 +02:00
Oleh Prypin
427d553c2b Let plugins put strings into warnings
even though they should be 2-tuples.

Fixes #3014
2022-10-21 22:27:22 +02:00
Oleh Prypin
0584e51e7d Chore dependency upgrade 2022-10-16 16:27:32 +02:00
Oleh Prypin
faba3f046e Add missed entry in release notes 2022-10-15 21:29:03 +02:00
Oleh Prypin
aa9eabea1a Release 1.4.1 (#3004) 1.4.1 2022-10-15 21:13:41 +02:00
Blueswen
79fa445717 URL-encode paths when serving a redirect (#3001)
Co-authored-by: Oleh Prypin <oleh@pryp.in>
2022-10-14 00:48:47 +02:00
Oleh Prypin
64c42a6943 Fix tests for previous commit 2022-10-14 00:45:17 +02:00
Oleh Prypin
6b7d0a55e0 Prevent a confusing stack trace when theme config fails validation
Caused by previous commit.
When, for example, the chosen theme is not installed, a stack trace would be shown instead of a proper error. Because then somehow the theme config remains a dict but validation moves on anyway.
2022-10-14 00:23:55 +02:00
Oleh Prypin
6fca6b59a2 Support theme-namespaced plugin loading (#2998)
This is mainly aimed at 'material' theme which also ships plugins with it. It will be able to ship plugins under the name e.g. 'material/search' and that will ensure the following effects:

* If the current theme is 'material', the plugin 'material/search' will always be preferred over 'search'.
* If the current theme *isn't* 'material', the only way to use this plugin is by specifying `plugins: [material/search]`.

One can also specify `plugins: ['/search']` instead of `plugins: ['search']` to definitely avoid the theme-namespaced plugin.

Previously:
* #2591

@squidfunk
2022-10-12 03:54:40 +02:00
Oleh Prypin
568e63ec3f Merge pull request #2997 from mkdocs/plugconf
Refactor plugin-related config options and error reporting
2022-10-11 21:51:50 -04:00
Oleh Prypin
aaf819f183 Better guard an edge case in plugin config 2022-10-08 15:07:34 +02:00
Oleh Prypin
b964e05372 Refactor load_plugin usage 2022-10-08 14:56:20 +02:00
Oleh Prypin
9ada9bf969 Also tighten warnings of plugin configs 2022-10-08 14:56:20 +02:00
Oleh Prypin
6b4d20e1eb Refactor plugin_cache usage to avoid nested exception 2022-10-08 14:49:04 +02:00
Oleh Prypin
ca8a3c8d67 Tighten warnings and type annotations in config_options 2022-10-08 14:49:04 +02:00
Oleh Prypin
76709ab540 Expand plugin testing 2022-10-08 14:49:04 +02:00
Oleh Prypin
7a72282f8a Refactor Theme config option to use mainly run_validation 2022-10-08 14:48:46 +02:00
Oleh Prypin
b2083d07f5 Add CLI reference page, auto-generated from Click (#2996) 2022-10-08 11:17:05 +02:00
Oleh Prypin
aa10190a55 Migrate from Tox to Hatch as test runner (#2991) 2022-10-07 23:18:05 +02:00
Oleh Prypin
65c24c21f0 Integrate Babel build steps as a Hatch hook (#2992) 2022-10-07 18:07:35 +02:00
Oleh Prypin
30cdac47a9 Switch to pyproject.toml and Hatch build (#2988) 2022-10-07 00:42:48 +02:00
Oleh Prypin
12ee265cc1 Remove pybabel setuptools integration (#2990) 2022-10-03 19:30:02 +02:00
Oleh Prypin
f2c648b35f Fix tests that wrote something into the source directory 2022-10-03 01:22:25 +02:00
Oleh Prypin
418d23a4da Actually depend on 'colorama' on Windows (#2987)
This was missed in #2606
2022-10-02 20:14:06 +02:00
Oleh Prypin
1a43c4a111 Remove unused FontAwesome.otf 2022-10-02 15:03:12 +02:00
Oleh Prypin
4dd64a6950 Mention event priority values also in release notes 2022-09-27 20:00:35 +02:00
Oleh Prypin
927ee2684b Release 1.4.0 (#2986) 1.4.0 2022-09-27 19:26:54 +02:00
Oleh Prypin
5cce5012b4 Merge pull request #2962 from mkdocs/meta
Rework ConfigOption schemas as class-based
2022-09-26 14:25:18 +02:00
Oleh Prypin
5015fa72af Add examples of class-based schema with ListOfItems 2022-09-26 11:35:24 +02:00
Oleh Prypin
cc627f7ba3 Prevent wrapping into Optional when the option has a default 2022-09-26 11:35:24 +02:00
Oleh Prypin
aeffe61499 Change config_options.URL's default from '' to None 2022-09-26 11:35:24 +02:00
Oleh Prypin
51569476c0 Add a test for subclassing a config schema 2022-09-25 20:03:54 +02:00
Oleh Prypin
ff8552a57a Add tests for new class-based configs
The old-style tests are intentionally kept at config_options_legacy_tests.py
2022-09-25 20:03:54 +02:00
Oleh Prypin
6d8c4d1c7f Preserve a copy of config_options_tests before reworking it 2022-09-25 20:03:20 +02:00
Oleh Prypin
452f56c61f Move config_options_tests.py before reworking it 2022-09-25 20:02:57 +02:00
Oleh Prypin
cf9d23757e Change ListOfItems' "default default" from [] to None 2022-09-25 19:19:10 +02:00
Oleh Prypin
4470c75ee9 Support passing Config subclasses to SubConfig
They are validated by default
2022-09-25 19:19:09 +02:00
Oleh Prypin
ac0efce437 Add Optional config but make fields in class-based config required 2022-09-25 19:19:09 +02:00
Oleh Prypin
a4c1bb14dc Add documentation for type-checked configs 2022-09-25 19:19:09 +02:00
Oleh Prypin
e160c47962 Eliminate the need to write config_class = FooConfig
when subclassing BasePlugin[FooConfig]
2022-09-25 19:19:09 +02:00
Oleh Prypin
1ab0a9f84b Use attribute-based access from MkDocsConfig 2022-09-25 19:19:09 +02:00
Oleh Prypin
46afe3ffef Annotate the type MkDocsConfig 2022-09-25 19:19:09 +02:00