diff --git a/mkdocs/config/base.py b/mkdocs/config/base.py index 72bfa4c1..b5d4b1fc 100644 --- a/mkdocs/config/base.py +++ b/mkdocs/config/base.py @@ -207,8 +207,7 @@ def get_schema(cls: type) -> PlainConfigSchema: See mkdocs/config/defaults.py for an example. """ - all_items = ((k, getattr(cls, k)) for k in dir(cls) if not k.startswith('_')) - return tuple((k, v) for k, v in all_items if isinstance(v, BaseConfigOption)) + return tuple((k, v) for k, v in cls.__dict__.items() if isinstance(v, BaseConfigOption)) @contextmanager diff --git a/mkdocs/tests/config/base_tests.py b/mkdocs/tests/config/base_tests.py index 74af7ef2..2693837b 100644 --- a/mkdocs/tests/config/base_tests.py +++ b/mkdocs/tests/config/base_tests.py @@ -2,7 +2,7 @@ import os import unittest from mkdocs import exceptions -from mkdocs.config import base, defaults +from mkdocs.config import base, config_options, defaults from mkdocs.config.base import ValidationError from mkdocs.config.config_options import BaseConfigOption from mkdocs.tests.base import change_dir, tempdir @@ -268,3 +268,16 @@ class ConfigBaseTests(unittest.TestCase): self.assertEqual(cfg['docs_dir'], docs_dir) self.assertEqual(cfg.config_file_path, config_fname) self.assertIsInstance(cfg.config_file_path, str) + + def test_get_schema(self): + class FooConfig: + z = config_options.URL() + aa = config_options.Type(int) + + self.assertEqual( + base.get_schema(FooConfig), + ( + ('z', FooConfig.z), + ('aa', FooConfig.aa), + ), + )