mirror of
https://github.com/mkdocs/mkdocs.git
synced 2026-03-27 09:58:31 +07:00
Fix get_schema to preserve the definition order
although it will no longer pick up fields of superclasses.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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),
|
||||
),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user