Demo: AttributeError: 'ValueError' object has no attribute 'endswith'
If your spec is not valid according to SpecVerifier you get errors. That is to be expected.
But the error handler is also failing:
Checking mandatory specification keys
contains "name" [check]
contains "longName" [check]
contains "numberOfVersions" [check]
contains "numberOfPages" [check]
Traceback (most recent call last):
File "/home/cbm/src/plom/plom.git/plom_server/SpecCreator/management/commands/plom_demo_spec.py", line 89, in handle
valid_spec = staged_spec_service.get_valid_spec_dict()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cbm/src/plom/plom.git/plom_server/SpecCreator/services/spec_staging.py", line 432, in get_valid_spec_dict
valid_dict = self.validate_specification(verbose=verbose)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cbm/src/plom/plom.git/plom_server/SpecCreator/services/spec_staging.py", line 445, in validate_specification
verifier.verifySpec(verbose=verbose)
File "/home/cbm/src/plom/plom.git/plom/specVerifier.py", line 526, in verifySpec
self.check_keys(print=prnt)
File "/home/cbm/src/plom/plom.git/plom/specVerifier.py", line 622, in check_keys
raise ValueError(f'Specification error - must contain "{x}"')
ValueError: Specification error - must contain "numberToProduce"
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/cbm/src/plom/plom.git/plom_server/manage.py", line 38, in <module>
main()
File "/home/cbm/src/plom/plom.git/plom_server/manage.py", line 34, in main
execute_from_command_line(sys.argv)
File "/usr/lib/python3.11/site-packages/django/core/management/__init__.py", line 446, in execute_from_command_line
utility.execute()
File "/usr/lib/python3.11/site-packages/django/core/management/__init__.py", line 440, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/lib/python3.11/site-packages/django/core/management/base.py", line 414, in run_from_argv
self.execute(*args, **cmd_options)
File "/usr/lib/python3.11/site-packages/django/core/management/base.py", line 460, in execute
output = self.handle(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cbm/src/plom/plom.git/plom_server/Demo/management/commands/plom_demo.py", line 239, in handle
creation_service.prepare_assessment(config)
File "/home/cbm/src/plom/plom.git/plom_server/Demo/services/demo_creation.py", line 33, in prepare_assessment
call_command("plom_demo_spec")
File "/usr/lib/python3.11/site-packages/django/core/management/__init__.py", line 198, in call_command
return command.execute(*args, **defaults)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/site-packages/django/core/management/base.py", line 460, in execute
output = self.handle(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cbm/src/plom/plom.git/plom_server/SpecCreator/management/commands/plom_demo_spec.py", line 99, in handle
self.stderr.write(e)
File "/usr/lib/python3.11/site-packages/django/core/management/base.py", line 169, in write
if ending and not msg.endswith(ending):
^^^^^^^^^^^^
AttributeError: 'ValueError' object has no attribute 'endswith'
Anytime we see that "During handling of the above exception, another exception occurred:", something is wrong, either an actual error in the error-handling --- wow deep.
Or it can a forgotten from None
in raise ValueError from None
...