From 97cca76970ef7b7eb03d51ab407f37dbd8607774 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Thu, 19 Sep 2024 16:58:20 +0200 Subject: [PATCH] Revert "Codegen: allow to include `.py` files in `schema.py`" --- misc/codegen/lib/schemadefs.py | 13 ++----- misc/codegen/loaders/schemaloader.py | 2 +- misc/codegen/test/test_schemaloader.py | 48 +------------------------- 3 files changed, 5 insertions(+), 58 deletions(-) diff --git a/misc/codegen/lib/schemadefs.py b/misc/codegen/lib/schemadefs.py index dd8741483532..ed899e71171a 100644 --- a/misc/codegen/lib/schemadefs.py +++ b/misc/codegen/lib/schemadefs.py @@ -32,16 +32,9 @@ def modify(self, prop: _schema.Property): def include(source: str): - scope = _inspect.currentframe().f_back.f_locals - if source.endswith(".dbscheme"): - # add to `includes` variable in calling context - scope.setdefault("__includes", []).append(source) - elif source.endswith(".py"): - # just load the contents - with open(source) as input: - exec(input.read(), scope) - else: - raise _schema.Error(f"Unsupported file for inclusion: {source}") + # add to `includes` variable in calling context + _inspect.currentframe().f_back.f_locals.setdefault( + "__includes", []).append(source) class _Namespace: diff --git a/misc/codegen/loaders/schemaloader.py b/misc/codegen/loaders/schemaloader.py index 68eb66235b72..7720c4057d07 100644 --- a/misc/codegen/loaders/schemaloader.py +++ b/misc/codegen/loaders/schemaloader.py @@ -127,7 +127,7 @@ def _check_test_with(classes: typing.Dict[str, schema.Class]): def load(m: types.ModuleType) -> schema.Schema: - includes = [] + includes = set() classes = {} known = {"int", "string", "boolean"} known.update(n for n in m.__dict__ if not n.startswith("__")) diff --git a/misc/codegen/test/test_schemaloader.py b/misc/codegen/test/test_schemaloader.py index c8f39a0aee4e..1880454a8e7d 100644 --- a/misc/codegen/test/test_schemaloader.py +++ b/misc/codegen/test/test_schemaloader.py @@ -13,7 +13,7 @@ class data: pass assert data.classes == {} - assert data.includes == [] + assert data.includes == set() assert data.null is None assert data.null_class is None @@ -838,51 +838,5 @@ class C(Root): pass -def test_include_dbscheme(): - @load - class data: - defs.include("foo.dbscheme") - defs.include("bar.dbscheme") - - assert data.includes == ["foo.dbscheme", "bar.dbscheme"] - - -def test_include_source(tmp_path): - (tmp_path / "foo.py").write_text(""" -class A(Root): - pass -""") - (tmp_path / "bar.py").write_text(""" -class C(Root): - pass -""") - - @load - class data: - class Root: - pass - - defs.include(str(tmp_path / "foo.py")) - - class B(Root): - pass - - defs.include(str(tmp_path / "bar.py")) - - assert data.classes == { - "Root": schema.Class("Root", derived=set("ABC")), - "A": schema.Class("A", bases=["Root"]), - "B": schema.Class("B", bases=["Root"]), - "C": schema.Class("C", bases=["Root"]), - } - - -def test_include_not_supported(tmp_path): - with pytest.raises(schema.Error): - @load - class data: - defs.include("foo.bar") - - if __name__ == '__main__': sys.exit(pytest.main([__file__] + sys.argv[1:]))