diff --git a/Adjo b/Adjo new file mode 100644 index 0000000000000000000000000000000000000000..3bfaf12ce2b9e19f7ca869e6eb9cc49b58527619 --- /dev/null +++ b/Adjo @@ -0,0 +1,49 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +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 +-----END OPENSSH PRIVATE KEY----- diff --git a/Adjo.pub b/Adjo.pub new file mode 100644 index 0000000000000000000000000000000000000000..9719daf91ffafa995c2e1d0e7aa678ea4aa8722d --- /dev/null +++ b/Adjo.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCoxDoSS+cvezVDGxqa8YreE6vIuLsibAVX3jE0idwaJoSU+5aPOtplXpOV/1nO70GaPtO9S3KdfDzYc7okdyXJei4UOSR8RK+tVb/0oHeACrecEPmn37aQp/7FoFYr3+YFv3uqOBlA0s/0z+9+yYYHJz7sNyRtbu1iQdYUUYhu0b2W7b8f1sSjChWRr62gZWTHqhDneknqL8k+akL+cOLhr5uKnantQIamVEhDFbZlsv5FXy/JCwZXCUE54nmYcr5tfQV7i+kyKPUppxfdDgWBqSnkyuDmTjbIcADj4jEjUr1sGuux2CyMlTMiKWXq/BFXOQdbpyTgq6VNupn80gDplWODxm1XFJz4ncdwXSCq0PwVJ9atiWne2+C8io2iXZVghkPCN008Xxqn2ydGxl+IG0U6W9M7vdMtLpu6YnAq28HBrAaxONAvl5bLcNbQGRBi4xxiP0uYVq9ZN9arkKOkTwj2ZjIACm3s9VtWZ5CWEIOufEl80ITXzhCCDOif2bE8fNnlVNr2vnHoYu4OoZnTDfYhxjhN37BCVPb9t2FG+NtwLGxHoA0hrDv5n09Y8uJ2cYRHR1mdGJQLQoHjXkSU1o4hG1J58yWhtkokSQAzoQTZaOi4lnglRMPFY1hsYRY7W+pkcB54DpxXD/qJrpeMRZa3hBoPTgUOQUcXIZkMNw== your_email@example.com diff --git a/Re-initialization b/Re-initialization new file mode 100644 index 0000000000000000000000000000000000000000..9c0e658c1e13a0f8a01b698e14f8fc549dbb210a --- /dev/null +++ b/Re-initialization @@ -0,0 +1,30 @@ +class VariableReInitializationError(Exception): #here, defining the custom exception class + pass + +initialized_vars = {} #adding dictionary + +def check_reinit(variable_name, value): #check Re-initialisation function + if variable_name in initialized_vars: + raise VariableReInitializationError(f'Initialization error: None:3:1 --> {variable_name} = {value} <--\nRepeated initialization of "{variable_name}"') + initialized_vars[variable_name] = value + +# Here, First initialization +a = 1 +check_reinit('a', a) + +# Re-initialization (this will raise an error) +a = 3 +check_reinit('a', a) + +try: + # When first initialization occurs + a = 1 + check_reinit('a', a) + + # When Re-initialization occurs, checking reinit again + a = 3 + check_reinit('a', a) + +except VariableReInitializationError as e: + print(e) + \ No newline at end of file diff --git a/Untitled.ipynb b/Untitled.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..f914f0f214a7709fbd285d88277bec89e995ed2f --- /dev/null +++ b/Untitled.ipynb @@ -0,0 +1,46 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "323ebc2e-089d-4b42-9024-0699b2fabf9e", + "metadata": {}, + "outputs": [], + "source": [ + "blah\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "be49f38b-06e8-46fe-ad53-334e2ff74c79", + "metadata": {}, + "outputs": [], + "source": [ + "a/0\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6f7ff9e5-063c-4346-8874-a0ddf12faf18", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "textS/textM", + "language": "text", + "name": "texts" + }, + "language_info": { + "file_extension": ".vm", + "mimetype": "text/plain", + "name": "virtmat" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/modification b/modification new file mode 100644 index 0000000000000000000000000000000000000000..cbc1ebba1335b65e701e203b14044dc7033b6e43 --- /dev/null +++ b/modification @@ -0,0 +1,5 @@ +try: + blah +except NameError: + print("Unknown object: None:3:7") + print('Unknown object "blah" of class "OBJECT"') \ No newline at end of file diff --git a/requirement.txt b/requirement.txt new file mode 100644 index 0000000000000000000000000000000000000000..cbc1ebba1335b65e701e203b14044dc7033b6e43 --- /dev/null +++ b/requirement.txt @@ -0,0 +1,5 @@ +try: + blah +except NameError: + print("Unknown object: None:3:7") + print('Unknown object "blah" of class "OBJECT"') \ No newline at end of file diff --git a/src/virtmat/language/kernel/kernel.py b/src/virtmat/language/kernel/kernel.py index 4acb5f6e68b605af4b0574a3e2a69ab9436bedd0..0bd3103e91bfee0ba17bd4e3608034da1ec5ff53 100644 --- a/src/virtmat/language/kernel/kernel.py +++ b/src/virtmat/language/kernel/kernel.py @@ -39,6 +39,9 @@ class VMKernel(Kernel): """wrapped and evaluated version of get_model() of the Session class""" return getattr(self.vmlang_session.get_model(*args, **kwargs), 'value', '') + + + def do_execute(self, code, silent, store_history=True, user_expressions=None, allow_stdin=False, *, cell_meta=None, cell_id=None): @@ -63,6 +66,8 @@ class VMKernel(Kernel): 'user_expressions': {} } + + def do_complete(self, code, cursor_pos): code = code[:cursor_pos] default = {'matches': [], 'cursor_start': 0, 'cursor_end': cursor_pos, diff --git a/src/virtmat/language/utilities/errors.py b/src/virtmat/language/utilities/errors.py index 5149d7b8f14873623f659b13f79b4b590ea33af2..89e9c9a11d650a8f46cd0da701620cccbc24b935 100644 --- a/src/virtmat/language/utilities/errors.py +++ b/src/virtmat/language/utilities/errors.py @@ -1,3 +1,5 @@ +#NEW CODE + """handling domain-specific errors""" import sys import importlib @@ -7,6 +9,15 @@ from pint.errors import OffsetUnitCalculusError from ase.calculators.calculator import CalculatorSetupError from virtmat.middleware.exceptions import ResourceConfigurationError from virtmat.language.utilities.textx import get_location_context +from .exceptions import ( + ObjectImportError, + ObjectFromFileError, + ObjectSchemaValidationError, + ObjectAlreadyExistsError, + ObjectNotFoundError, + ObjectConversionError, + ObjectUniqueConstraintError +) FILE_READ_EXCEPTION_IMPORTS = {'ruamel.yaml.parser': 'ParserError', 'ruamel.yaml.scanner': 'ScannerError', @@ -226,77 +237,59 @@ def format_textxerr_msg(err): return msg -@textxerror_wrap -def raise_exception(_, exception, msg, where_used=None): - """utility function to raise an exception at a custom location""" - if where_used is not None: - err = TextXError('', **get_location_context(where_used)) - msg += f'\n used here: {format_textxerr_msg(err)}' - raise exception(msg) +try: + from ruamel.yaml.error import MarkedYAMLError +except (ModuleNotFoundError, AttributeError): + class MarkedYAMLError(Exception): + pass + +try: + from jsonschema import ValidationError +except (ModuleNotFoundError, AttributeError): + class ValidationError(Exception): + pass +try: + from pymongo.errors import DuplicateKeyError +except (ModuleNotFoundError, AttributeError): + class DuplicateKeyError(Exception): + pass -TEXTX_WRAPPED_EXCEPTIONS = (DimensionalityError, UndefinedUnitError, PintError, - InvalidUnitError, CalculatorSetupError, StructureInputError, - StaticTypeError, RuntimeTypeError, StaticValueError, - RuntimeValueError, PropertyError, SubscriptingError, - EvaluationError, AncestorEvaluationError, ArithmeticError, - FileExistsError, OSError) +try: + from bson.errors import BSONError +except (ModuleNotFoundError, AttributeError): + class BSONError(Exception): + pass def process_error(err): - """generic error processor for errors of class TextXError""" - if err.err_type is None: - if isinstance(err, TextXSyntaxError): - err_type = 'Syntax error' - elif isinstance(err, TextXSemanticError): - err_type = 'Semantic error' - elif isinstance(err.__cause__, DimensionalityError): - err_type = 'Dimensionality error' - elif isinstance(err.__cause__, UndefinedUnitError): - err_type = 'Undefined unit' - elif isinstance(err.__cause__, OffsetUnitCalculusError): - err_type = 'Offset unit calculus error' - elif isinstance(err.__cause__, PintError): - err_type = 'Units error' - elif isinstance(err.__cause__, InvalidUnitError): - err_type = 'Invalid units error' - elif isinstance(err.__cause__, CalculatorSetupError): - err_type = 'Calculator setup error' - elif isinstance(err.__cause__, StructureInputError): - err_type = 'Structure input error' - elif isinstance(err.__cause__, (StaticTypeError, RuntimeTypeError)): - err_type = 'Type error' - elif isinstance(err.__cause__, (StaticValueError, RuntimeValueError)): - err_type = 'Value error' - elif isinstance(err.__cause__, PropertyError): - err_type = 'Invalid key' - elif isinstance(err.__cause__, SubscriptingError): - err_type = 'Invalid index' - elif isinstance(err.__cause__, ConvergenceError): - err_type = 'Convergence error' - elif isinstance(err.__cause__, EvaluationError): - err_type = 'Evaluation error' - elif isinstance(err.__cause__, AncestorEvaluationError): - err_type = 'Ancestor evaluation error' - elif isinstance(err.__cause__, UpdateError): - err_type = 'Variable update error' - elif isinstance(err.__cause__, TagError): - err_type = 'Tag error' - elif isinstance(err.__cause__, ResourceConfigurationError): - err_type = 'Resource configuration error' - elif isinstance(err.__cause__, ArithmeticError): - err_type = 'Arithmetic error' - elif isinstance(err.__cause__, NotImplementedError): - err_type = 'Not implemented' - elif isinstance(err.__cause__, FileExistsError): - err_type = 'File exists error' - elif isinstance(err.__cause__, OSError): - err_type = 'Operating system error' + err_type = "Error" + if err.__cause__ is not None: + if isinstance(err.__cause__, MarkedYAMLError): + err_type = 'YAML syntax error' + elif isinstance(err.__cause__, ValidationError): + err_type = 'Schema validation error' + elif isinstance(err.__cause__, DuplicateKeyError): + err_type = 'Duplicate key error' + elif isinstance(err.__cause__, BSONError): + err_type = 'BSON encoding/decoding error' + elif isinstance(err.__cause__, ObjectImportError): + err_type = 'Object import error' + elif isinstance(err.__cause__, ObjectFromFileError): + err_type = 'Object from file error' + elif isinstance(err.__cause__, ObjectSchemaValidationError): + err_type = 'Object schema validation error' + elif isinstance(err.__cause__, ObjectAlreadyExistsError): + err_type = 'Object already exists error' + elif isinstance(err.__cause__, ObjectNotFoundError): + err_type = 'Object not found error' + elif isinstance(err.__cause__, ObjectConversionError): + err_type = 'Object conversion error' + elif isinstance(err.__cause__, ObjectUniqueConstraintError): + err_type = 'Object unique constraint error' else: raise err.__cause__ - else: - err_type = err.err_type - print_stderr(err_type + ': ' + format_textxerr_msg(err)) + return err_type def error_handler(func): @@ -304,39 +297,12 @@ def error_handler(func): def wrapper(*args, **kwargs): try: return func(*args, **kwargs) - except TextXError as err: - process_error(err) - return None - except ObjectFromFileError as err: - cause_cls = err.__cause__.__class__.__qualname__ - cause_mod = err.__cause__.__class__.__module__ - print_stderr(f'{cause_mod}.{cause_cls}: {err.path}: {err.__cause__}') - return None - except CompatibilityError as err: - print_stderr(f'Compatibility error: {err}') - return None - except VaryError as err: - print_stderr(f'Vary error: {err}') - return None - except QueryError as err: - print_stderr(f'Query error: {err}') - return None - except ReuseError as err: - print_stderr(f'Reuse error: {err}') - return None - except ModelNotFoundError as err: - print_stderr(f'Model not found: {err}') - return None - except ConfigurationError as err: - print_stderr(f'Configuration error: {err}') - return None - except UpdateError as err: - print_stderr(f'Variable update error: {err}') - return None - except tuple([*MONGODB_EXCEPTIONS, *FILE_READ_EXCEPTIONS]) as err: - err_cls = err.__class__ - print_stderr(f'{err_cls.__module__}.{err_cls.__qualname__}: {err}') - return None except Exception as err: - raise RuntimeError('non-handled exception') from err - return wrapper + err_type = process_error(err) + print_stderr(format_textxerr_msg(f'{err_type}: {err}')) + if isinstance(err, ObjectFromFileError): + cause_cls = err.__cause__.__class__.__qualname__ + cause_mod = err.__cause__.__class__.__module__ + print_stderr(f'{cause_mod}.{cause_cls}: {err.path}: {err.__cause__}') + raise RuntimeError('Unhandled exception occurred') from err + return wrapper \ No newline at end of file