Open
Description
In the context of enola-dev/enola#757:
It's "nice" how linkml-lint
provides "pretty" (clean) feedback:
/home/vorburger/git/github.com/enola-dev/enola/docs/models/enola.dev/files.linkml.yaml
warning Schema maps prefix 'schema' to namespace 'https://schema.org/' instead of namespace 'http://schema.org/' (canonical_prefixes)
It's a little less optimal how gen-project
on the other hand throws 🤣 it's internal Python Traceback into your face:
Traceback (most recent call last):
File "/home/vorburger/git/github.com/enola-dev/enola/.venv/bin/gen-project", line 8, in <module>
sys.exit(cli())
^^^^^
File "/home/vorburger/git/github.com/enola-dev/enola/.venv/lib64/python3.12/site-packages/click/core.py", line 1157, in __call__
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/vorburger/git/github.com/enola-dev/enola/.venv/lib64/python3.12/site-packages/click/core.py", line 1078, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File "/home/vorburger/git/github.com/enola-dev/enola/.venv/lib64/python3.12/site-packages/click/core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/vorburger/git/github.com/enola-dev/enola/.venv/lib64/python3.12/site-packages/click/core.py", line 783, in invoke
return __callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/vorburger/git/github.com/enola-dev/enola/.venv/lib64/python3.12/site-packages/linkml/generators/projectgen.py", line 257, in cli
gen.generate(yamlfile, project_config)
File "/home/vorburger/git/github.com/enola-dev/enola/.venv/lib64/python3.12/site-packages/linkml/generators/projectgen.py", line 138, in generate
gen = gen_cls(local_path, **all_gen_args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<string>", line 24, in __init__
File "/home/vorburger/git/github.com/enola-dev/enola/.venv/lib64/python3.12/site-packages/linkml/utils/generator.py", line 204, in __post_init__
self._initialize_using_schemaloader(schema)
File "/home/vorburger/git/github.com/enola-dev/enola/.venv/lib64/python3.12/site-packages/linkml/utils/generator.py", line 251, in _initialize_using_schemaloader
loader.resolve()
File "/home/vorburger/git/github.com/enola-dev/enola/.venv/lib64/python3.12/site-packages/linkml/utils/schemaloader.py", line 211, in resolve
self.raise_value_error(f'Class "{cls.name}" - unknown slot: "{slotname}"', slotname)
File "/home/vorburger/git/github.com/enola-dev/enola/.venv/lib64/python3.12/site-packages/linkml/utils/schemaloader.py", line 933, in raise_value_error
SchemaLoader.raise_value_errors(error, loc_str)
File "/home/vorburger/git/github.com/enola-dev/enola/.venv/lib64/python3.12/site-packages/linkml/utils/schemaloader.py", line 941, in raise_value_errors
raise ValueError(f'{TypedNode.yaml_loc(loc_str, suffix="")} {error}')
ValueError: File "files.linkml.yaml", line 36, col 9 Class "File" - unknown slot: "parentFolder"
Traceback (most recent call last):
File "/home/vorburger/git/github.com/enola-dev/enola/.venv/bin/gen-project", line 8, in <module>
sys.exit(cli())
^^^^^
File "/home/vorburger/git/github.com/enola-dev/enola/.venv/lib64/python3.12/site-packages/click/core.py", line 1157, in __call__
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/vorburger/git/github.com/enola-dev/enola/.venv/lib64/python3.12/site-packages/click/core.py", line 1078, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File "/home/vorburger/git/github.com/enola-dev/enola/.venv/lib64/python3.12/site-packages/click/core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/vorburger/git/github.com/enola-dev/enola/.venv/lib64/python3.12/site-packages/click/core.py", line 783, in invoke
return __callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/vorburger/git/github.com/enola-dev/enola/.venv/lib64/python3.12/site-packages/linkml/generators/projectgen.py", line 257, in cli
gen.generate(yamlfile, project_config)
File "/home/vorburger/git/github.com/enola-dev/enola/.venv/lib64/python3.12/site-packages/linkml/generators/projectgen.py", line 138, in generate
gen = gen_cls(local_path, **all_gen_args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<string>", line 24, in __init__
File "/home/vorburger/git/github.com/enola-dev/enola/.venv/lib64/python3.12/site-packages/linkml/utils/generator.py", line 204, in __post_init__
self._initialize_using_schemaloader(schema)
File "/home/vorburger/git/github.com/enola-dev/enola/.venv/lib64/python3.12/site-packages/linkml/utils/generator.py", line 251, in _initialize_using_schemaloader
loader.resolve()
File "/home/vorburger/git/github.com/enola-dev/enola/.venv/lib64/python3.12/site-packages/linkml/utils/schemaloader.py", line 236, in resolve
self.raise_value_error(f"slot: {slot.name} - unrecognized range ({slot.range})", slot.range)
File "/home/vorburger/git/github.com/enola-dev/enola/.venv/lib64/python3.12/site-packages/linkml/utils/schemaloader.py", line 933, in raise_value_error
SchemaLoader.raise_value_errors(error, loc_str)
File "/home/vorburger/git/github.com/enola-dev/enola/.venv/lib64/python3.12/site-packages/linkml/utils/schemaloader.py", line 941, in raise_value_errors
raise ValueError(f'{TypedNode.yaml_loc(loc_str, suffix="")} {error}')
ValueError: File "enola.linkml.yaml", line 40, col 12 slot: url - unrecognized range (schema:URL)
I wish it would only report something along the lines of:
files.linkml.yaml:36:9 Class "File" - unknown slot: "parentFolder"
enola.linkml.yaml:40:12 Slot: url - unrecognized range (schema:URL)
I do understand that from an implementation point of view these are different, but as an end-users, it's just "bad model YAML" either way.
Or am I doing this totally wrong, and there is e.g. some other CLI tool which I should run before gen-project
which would catch this?
Would you possibly welcome any PRs for this? (Not sure how involved this would be; haven't looked into code, yet.)