diff --git a/python/gen/com/jetbrains/python/console/protocol/ExceedingArrayDimensionsException.java b/python/gen/com/jetbrains/python/console/protocol/ExceedingArrayDimensionsException.java new file mode 100644 index 000000000000..b9170c231547 --- /dev/null +++ b/python/gen/com/jetbrains/python/console/protocol/ExceedingArrayDimensionsException.java @@ -0,0 +1,264 @@ +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +package com.jetbrains.python.console.protocol; + +@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"}) +/** + * Indicates that the related array has more than two dimensions. + * + */ +@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.11.0)", date = "2019-05-07") +public class ExceedingArrayDimensionsException extends org.apache.thrift.TException implements org.apache.thrift.TBase, java.io.Serializable, Cloneable, Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ExceedingArrayDimensionsException"); + + + private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new ExceedingArrayDimensionsExceptionStandardSchemeFactory(); + private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new ExceedingArrayDimensionsExceptionTupleSchemeFactory(); + + + /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */ + public enum _Fields implements org.apache.thrift.TFieldIdEnum { +; + + private static final java.util.Map byName = new java.util.HashMap(); + + static { + for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) { + byName.put(field.getFieldName(), field); + } + } + + /** + * Find the _Fields constant that matches fieldId, or null if its not found. + */ + public static _Fields findByThriftId(int fieldId) { + switch(fieldId) { + default: + return null; + } + } + + /** + * Find the _Fields constant that matches fieldId, throwing an exception + * if it is not found. + */ + public static _Fields findByThriftIdOrThrow(int fieldId) { + _Fields fields = findByThriftId(fieldId); + if (fields == null) throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!"); + return fields; + } + + /** + * Find the _Fields constant that matches name, or null if its not found. + */ + public static _Fields findByName(java.lang.String name) { + return byName.get(name); + } + + private final short _thriftId; + private final java.lang.String _fieldName; + + _Fields(short thriftId, java.lang.String fieldName) { + _thriftId = thriftId; + _fieldName = fieldName; + } + + public short getThriftFieldId() { + return _thriftId; + } + + public java.lang.String getFieldName() { + return _fieldName; + } + } + public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; + static { + java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); + metaDataMap = java.util.Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(ExceedingArrayDimensionsException.class, metaDataMap); + } + + public ExceedingArrayDimensionsException() { + } + + /** + * Performs a deep copy on other. + */ + public ExceedingArrayDimensionsException(ExceedingArrayDimensionsException other) { + } + + public ExceedingArrayDimensionsException deepCopy() { + return new ExceedingArrayDimensionsException(this); + } + + @Override + public void clear() { + } + + public void setFieldValue(_Fields field, java.lang.Object value) { + switch (field) { + } + } + + public java.lang.Object getFieldValue(_Fields field) { + switch (field) { + } + throw new java.lang.IllegalStateException(); + } + + /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */ + public boolean isSet(_Fields field) { + if (field == null) { + throw new java.lang.IllegalArgumentException(); + } + + switch (field) { + } + throw new java.lang.IllegalStateException(); + } + + @Override + public boolean equals(java.lang.Object that) { + if (that == null) + return false; + if (that instanceof ExceedingArrayDimensionsException) + return this.equals((ExceedingArrayDimensionsException)that); + return false; + } + + public boolean equals(ExceedingArrayDimensionsException that) { + if (that == null) + return false; + if (this == that) + return true; + + return true; + } + + @Override + public int hashCode() { + int hashCode = 1; + + return hashCode; + } + + @Override + public int compareTo(ExceedingArrayDimensionsException other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + + return 0; + } + + public _Fields fieldForId(int fieldId) { + return _Fields.findByThriftId(fieldId); + } + + public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException { + scheme(iprot).read(iprot, this); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException { + scheme(oprot).write(oprot, this); + } + + @Override + public java.lang.String toString() { + java.lang.StringBuilder sb = new java.lang.StringBuilder("ExceedingArrayDimensionsException("); + boolean first = true; + + sb.append(")"); + return sb.toString(); + } + + public void validate() throws org.apache.thrift.TException { + // check for required fields + // check for sub-struct validity + } + + private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { + try { + write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out))); + } catch (org.apache.thrift.TException te) { + throw new java.io.IOException(te); + } + } + + private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException { + try { + read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in))); + } catch (org.apache.thrift.TException te) { + throw new java.io.IOException(te); + } + } + + private static class ExceedingArrayDimensionsExceptionStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory { + public ExceedingArrayDimensionsExceptionStandardScheme getScheme() { + return new ExceedingArrayDimensionsExceptionStandardScheme(); + } + } + + private static class ExceedingArrayDimensionsExceptionStandardScheme extends org.apache.thrift.scheme.StandardScheme { + + public void read(org.apache.thrift.protocol.TProtocol iprot, ExceedingArrayDimensionsException struct) throws org.apache.thrift.TException { + org.apache.thrift.protocol.TField schemeField; + iprot.readStructBegin(); + while (true) + { + schemeField = iprot.readFieldBegin(); + if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { + break; + } + switch (schemeField.id) { + default: + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + iprot.readFieldEnd(); + } + iprot.readStructEnd(); + + // check for required fields of primitive type, which can't be checked in the validate method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, ExceedingArrayDimensionsException struct) throws org.apache.thrift.TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + + } + + private static class ExceedingArrayDimensionsExceptionTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory { + public ExceedingArrayDimensionsExceptionTupleScheme getScheme() { + return new ExceedingArrayDimensionsExceptionTupleScheme(); + } + } + + private static class ExceedingArrayDimensionsExceptionTupleScheme extends org.apache.thrift.scheme.TupleScheme { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, ExceedingArrayDimensionsException struct) throws org.apache.thrift.TException { + org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot; + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, ExceedingArrayDimensionsException struct) throws org.apache.thrift.TException { + org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot; + } + } + + private static S scheme(org.apache.thrift.protocol.TProtocol proto) { + return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme(); + } +} + diff --git a/python/gen/com/jetbrains/python/console/protocol/PythonConsoleBackendService.java b/python/gen/com/jetbrains/python/console/protocol/PythonConsoleBackendService.java index 8d8d048235c7..ef0c4b086c85 100644 --- a/python/gen/com/jetbrains/python/console/protocol/PythonConsoleBackendService.java +++ b/python/gen/com/jetbrains/python/console/protocol/PythonConsoleBackendService.java @@ -7,7 +7,7 @@ package com.jetbrains.python.console.protocol; @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"}) -@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.11.0)", date = "2018-08-07") +@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.11.0)", date = "2019-05-07") public class PythonConsoleBackendService { public interface Iface { @@ -74,7 +74,7 @@ public class PythonConsoleBackendService { public java.util.List evaluate(java.lang.String expression) throws org.apache.thrift.TException; - public GetArrayResponse getArray(java.lang.String vars, int rowOffset, int colOffset, int rows, int cols, java.lang.String format) throws UnsupportedArrayTypeException, org.apache.thrift.TException; + public GetArrayResponse getArray(java.lang.String vars, int rowOffset, int colOffset, int rows, int cols, java.lang.String format) throws UnsupportedArrayTypeException, ExceedingArrayDimensionsException, org.apache.thrift.TException; /** * The result is returned asyncronously with `PythonConsoleFrontendService.returnFullValue`. @@ -394,7 +394,7 @@ public class PythonConsoleBackendService { throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "evaluate failed: unknown result"); } - public GetArrayResponse getArray(java.lang.String vars, int rowOffset, int colOffset, int rows, int cols, java.lang.String format) throws UnsupportedArrayTypeException, org.apache.thrift.TException + public GetArrayResponse getArray(java.lang.String vars, int rowOffset, int colOffset, int rows, int cols, java.lang.String format) throws UnsupportedArrayTypeException, ExceedingArrayDimensionsException, org.apache.thrift.TException { send_getArray(vars, rowOffset, colOffset, rows, cols, format); return recv_getArray(); @@ -412,7 +412,7 @@ public class PythonConsoleBackendService { sendBase("getArray", args); } - public GetArrayResponse recv_getArray() throws UnsupportedArrayTypeException, org.apache.thrift.TException + public GetArrayResponse recv_getArray() throws UnsupportedArrayTypeException, ExceedingArrayDimensionsException, org.apache.thrift.TException { getArray_result result = new getArray_result(); receiveBase(result, "getArray"); @@ -422,6 +422,9 @@ public class PythonConsoleBackendService { if (result.unsupported != null) { throw result.unsupported; } + if (result.exceedingDimensions != null) { + throw result.exceedingDimensions; + } throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getArray failed: unknown result"); } @@ -885,7 +888,7 @@ public class PythonConsoleBackendService { prot.writeMessageEnd(); } - public GetArrayResponse getResult() throws UnsupportedArrayTypeException, org.apache.thrift.TException { + public GetArrayResponse getResult() throws UnsupportedArrayTypeException, ExceedingArrayDimensionsException, org.apache.thrift.TException { if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) { throw new java.lang.IllegalStateException("Method call not finished!"); } @@ -1285,6 +1288,8 @@ public class PythonConsoleBackendService { result.success = iface.getArray(args.vars, args.rowOffset, args.colOffset, args.rows, args.cols, args.format); } catch (UnsupportedArrayTypeException unsupported) { result.unsupported = unsupported; + } catch (ExceedingArrayDimensionsException exceedingDimensions) { + result.exceedingDimensions = exceedingDimensions; } return result; } @@ -2082,6 +2087,10 @@ public class PythonConsoleBackendService { result.unsupported = (UnsupportedArrayTypeException) e; result.setUnsupportedIsSet(true); msg = result; + } else if (e instanceof ExceedingArrayDimensionsException) { + result.exceedingDimensions = (ExceedingArrayDimensionsException) e; + result.setExceedingDimensionsIsSet(true); + msg = result; } else if (e instanceof org.apache.thrift.transport.TTransportException) { _LOGGER.error("TTransportException inside handler", e); fb.close(); @@ -11301,17 +11310,20 @@ public class PythonConsoleBackendService { private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.STRUCT, (short)0); private static final org.apache.thrift.protocol.TField UNSUPPORTED_FIELD_DESC = new org.apache.thrift.protocol.TField("unsupported", org.apache.thrift.protocol.TType.STRUCT, (short)1); + private static final org.apache.thrift.protocol.TField EXCEEDING_DIMENSIONS_FIELD_DESC = new org.apache.thrift.protocol.TField("exceedingDimensions", org.apache.thrift.protocol.TType.STRUCT, (short)2); private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new getArray_resultStandardSchemeFactory(); private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new getArray_resultTupleSchemeFactory(); public GetArrayResponse success; // required public UnsupportedArrayTypeException unsupported; // required + public ExceedingArrayDimensionsException exceedingDimensions; // required /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */ public enum _Fields implements org.apache.thrift.TFieldIdEnum { SUCCESS((short)0, "success"), - UNSUPPORTED((short)1, "unsupported"); + UNSUPPORTED((short)1, "unsupported"), + EXCEEDING_DIMENSIONS((short)2, "exceedingDimensions"); private static final java.util.Map byName = new java.util.HashMap(); @@ -11330,6 +11342,8 @@ public class PythonConsoleBackendService { return SUCCESS; case 1: // UNSUPPORTED return UNSUPPORTED; + case 2: // EXCEEDING_DIMENSIONS + return EXCEEDING_DIMENSIONS; default: return null; } @@ -11377,6 +11391,8 @@ public class PythonConsoleBackendService { new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, GetArrayResponse.class))); tmpMap.put(_Fields.UNSUPPORTED, new org.apache.thrift.meta_data.FieldMetaData("unsupported", org.apache.thrift.TFieldRequirementType.DEFAULT, new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, UnsupportedArrayTypeException.class))); + tmpMap.put(_Fields.EXCEEDING_DIMENSIONS, new org.apache.thrift.meta_data.FieldMetaData("exceedingDimensions", org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, ExceedingArrayDimensionsException.class))); metaDataMap = java.util.Collections.unmodifiableMap(tmpMap); org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getArray_result.class, metaDataMap); } @@ -11386,11 +11402,13 @@ public class PythonConsoleBackendService { public getArray_result( GetArrayResponse success, - UnsupportedArrayTypeException unsupported) + UnsupportedArrayTypeException unsupported, + ExceedingArrayDimensionsException exceedingDimensions) { this(); this.success = success; this.unsupported = unsupported; + this.exceedingDimensions = exceedingDimensions; } /** @@ -11403,6 +11421,9 @@ public class PythonConsoleBackendService { if (other.isSetUnsupported()) { this.unsupported = new UnsupportedArrayTypeException(other.unsupported); } + if (other.isSetExceedingDimensions()) { + this.exceedingDimensions = new ExceedingArrayDimensionsException(other.exceedingDimensions); + } } public getArray_result deepCopy() { @@ -11413,6 +11434,7 @@ public class PythonConsoleBackendService { public void clear() { this.success = null; this.unsupported = null; + this.exceedingDimensions = null; } public GetArrayResponse getSuccess() { @@ -11463,6 +11485,30 @@ public class PythonConsoleBackendService { } } + public ExceedingArrayDimensionsException getExceedingDimensions() { + return this.exceedingDimensions; + } + + public getArray_result setExceedingDimensions(ExceedingArrayDimensionsException exceedingDimensions) { + this.exceedingDimensions = exceedingDimensions; + return this; + } + + public void unsetExceedingDimensions() { + this.exceedingDimensions = null; + } + + /** Returns true if field exceedingDimensions is set (has been assigned a value) and false otherwise */ + public boolean isSetExceedingDimensions() { + return this.exceedingDimensions != null; + } + + public void setExceedingDimensionsIsSet(boolean value) { + if (!value) { + this.exceedingDimensions = null; + } + } + public void setFieldValue(_Fields field, java.lang.Object value) { switch (field) { case SUCCESS: @@ -11481,6 +11527,14 @@ public class PythonConsoleBackendService { } break; + case EXCEEDING_DIMENSIONS: + if (value == null) { + unsetExceedingDimensions(); + } else { + setExceedingDimensions((ExceedingArrayDimensionsException)value); + } + break; + } } @@ -11492,6 +11546,9 @@ public class PythonConsoleBackendService { case UNSUPPORTED: return getUnsupported(); + case EXCEEDING_DIMENSIONS: + return getExceedingDimensions(); + } throw new java.lang.IllegalStateException(); } @@ -11507,6 +11564,8 @@ public class PythonConsoleBackendService { return isSetSuccess(); case UNSUPPORTED: return isSetUnsupported(); + case EXCEEDING_DIMENSIONS: + return isSetExceedingDimensions(); } throw new java.lang.IllegalStateException(); } @@ -11544,6 +11603,15 @@ public class PythonConsoleBackendService { return false; } + boolean this_present_exceedingDimensions = true && this.isSetExceedingDimensions(); + boolean that_present_exceedingDimensions = true && that.isSetExceedingDimensions(); + if (this_present_exceedingDimensions || that_present_exceedingDimensions) { + if (!(this_present_exceedingDimensions && that_present_exceedingDimensions)) + return false; + if (!this.exceedingDimensions.equals(that.exceedingDimensions)) + return false; + } + return true; } @@ -11559,6 +11627,10 @@ public class PythonConsoleBackendService { if (isSetUnsupported()) hashCode = hashCode * 8191 + unsupported.hashCode(); + hashCode = hashCode * 8191 + ((isSetExceedingDimensions()) ? 131071 : 524287); + if (isSetExceedingDimensions()) + hashCode = hashCode * 8191 + exceedingDimensions.hashCode(); + return hashCode; } @@ -11590,6 +11662,16 @@ public class PythonConsoleBackendService { return lastComparison; } } + lastComparison = java.lang.Boolean.valueOf(isSetExceedingDimensions()).compareTo(other.isSetExceedingDimensions()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetExceedingDimensions()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.exceedingDimensions, other.exceedingDimensions); + if (lastComparison != 0) { + return lastComparison; + } + } return 0; } @@ -11625,6 +11707,14 @@ public class PythonConsoleBackendService { sb.append(this.unsupported); } first = false; + if (!first) sb.append(", "); + sb.append("exceedingDimensions:"); + if (this.exceedingDimensions == null) { + sb.append("null"); + } else { + sb.append(this.exceedingDimensions); + } + first = false; sb.append(")"); return sb.toString(); } @@ -11689,6 +11779,15 @@ public class PythonConsoleBackendService { org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); } break; + case 2: // EXCEEDING_DIMENSIONS + if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) { + struct.exceedingDimensions = new ExceedingArrayDimensionsException(); + struct.exceedingDimensions.read(iprot); + struct.setExceedingDimensionsIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; default: org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); } @@ -11714,6 +11813,11 @@ public class PythonConsoleBackendService { struct.unsupported.write(oprot); oprot.writeFieldEnd(); } + if (struct.exceedingDimensions != null) { + oprot.writeFieldBegin(EXCEEDING_DIMENSIONS_FIELD_DESC); + struct.exceedingDimensions.write(oprot); + oprot.writeFieldEnd(); + } oprot.writeFieldStop(); oprot.writeStructEnd(); } @@ -11738,19 +11842,25 @@ public class PythonConsoleBackendService { if (struct.isSetUnsupported()) { optionals.set(1); } - oprot.writeBitSet(optionals, 2); + if (struct.isSetExceedingDimensions()) { + optionals.set(2); + } + oprot.writeBitSet(optionals, 3); if (struct.isSetSuccess()) { struct.success.write(oprot); } if (struct.isSetUnsupported()) { struct.unsupported.write(oprot); } + if (struct.isSetExceedingDimensions()) { + struct.exceedingDimensions.write(oprot); + } } @Override public void read(org.apache.thrift.protocol.TProtocol prot, getArray_result struct) throws org.apache.thrift.TException { org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot; - java.util.BitSet incoming = iprot.readBitSet(2); + java.util.BitSet incoming = iprot.readBitSet(3); if (incoming.get(0)) { struct.success = new GetArrayResponse(); struct.success.read(iprot); @@ -11761,6 +11871,11 @@ public class PythonConsoleBackendService { struct.unsupported.read(iprot); struct.setUnsupportedIsSet(true); } + if (incoming.get(2)) { + struct.exceedingDimensions = new ExceedingArrayDimensionsException(); + struct.exceedingDimensions.read(iprot); + struct.setExceedingDimensionsIsSet(true); + } } } diff --git a/python/helpers/pydev/_pydevd_bundle/pydevd_thrift.py b/python/helpers/pydev/_pydevd_bundle/pydevd_thrift.py index a069bc76b6a4..684fa3b2ee1b 100644 --- a/python/helpers/pydev/_pydevd_bundle/pydevd_thrift.py +++ b/python/helpers/pydev/_pydevd_bundle/pydevd_thrift.py @@ -15,7 +15,7 @@ from _pydevd_bundle.pydevd_constants import dict_iter_items, dict_keys, IS_PY3K, from _pydevd_bundle.pydevd_extension_api import TypeResolveProvider, StrPresentationProvider from _pydevd_bundle.pydevd_vars import get_label, array_default_format, MAXIMUM_ARRAY_SIZE from pydev_console.protocol import DebugValue, GetArrayResponse, ArrayData, ArrayHeaders, ColHeader, RowHeader, \ - UnsupportedArrayTypeException + UnsupportedArrayTypeException, ExceedingArrayDimensionsException from _pydevd_bundle.pydevd_utils import take_first_n_coll_elements try: @@ -440,7 +440,7 @@ def array_to_meta_thrift_struct(array, name, format): l = len(array.shape) reslice = "" if l > 2: - raise Exception("%s has more than 2 dimensions." % slice) + raise ExceedingArrayDimensionsException elif l == 1: # special case with 1D arrays arr[i, :] - row, but arr[:, i] - column with equal shape and ndim # http://stackoverflow.com/questions/16837946/numpy-a-2-rows-1-column-file-loadtxt-returns-1row-2-columns diff --git a/python/helpers/pydev/pydev_console/console.thrift b/python/helpers/pydev/pydev_console/console.thrift index 0c186f5a41c5..8e1a60645981 100644 --- a/python/helpers/pydev/pydev_console/console.thrift +++ b/python/helpers/pydev/pydev_console/console.thrift @@ -112,6 +112,12 @@ exception UnsupportedArrayTypeException { 1: string type, } +/** + * Indicates that the related array has more than two dimensions. + **/ +exception ExceedingArrayDimensionsException { +} + service PythonConsoleBackendService { /** * Returns `true` if Python console script needs more code to evaluate it. @@ -164,7 +170,7 @@ service PythonConsoleBackendService { DebugValues evaluate(1: string expression), GetArrayResponse getArray(1: string vars, 2: i32 rowOffset, 3: i32 colOffset, 4: i32 rows, 5: i32 cols, 6: string format) - throws (1: UnsupportedArrayTypeException unsupported), + throws (1: UnsupportedArrayTypeException unsupported, 2: ExceedingArrayDimensionsException exceedingDimensions), /** * The result is returned asyncronously with `PythonConsoleFrontendService.returnFullValue`. diff --git a/python/helpers/pydev/pydev_console/protocol.py b/python/helpers/pydev/pydev_console/protocol.py index 58d4323bd873..3b461ee71ede 100644 --- a/python/helpers/pydev/pydev_console/protocol.py +++ b/python/helpers/pydev/pydev_console/protocol.py @@ -16,6 +16,7 @@ ColHeader = _console_thrift.ColHeader RowHeader = _console_thrift.RowHeader UnsupportedArrayTypeException = _console_thrift.UnsupportedArrayTypeException +ExceedingArrayDimensionsException = _console_thrift.ExceedingArrayDimensionsException KeyboardInterruptException = _console_thrift.KeyboardInterruptException PythonConsoleFrontendService = _console_thrift.PythonConsoleFrontendService diff --git a/python/pydevSrc/com/jetbrains/python/debugger/PyFrameAccessor.java b/python/pydevSrc/com/jetbrains/python/debugger/PyFrameAccessor.java index 190373bfaf33..860ac2765ca5 100644 --- a/python/pydevSrc/com/jetbrains/python/debugger/PyFrameAccessor.java +++ b/python/pydevSrc/com/jetbrains/python/debugger/PyFrameAccessor.java @@ -27,6 +27,10 @@ public interface PyFrameAccessor { @Nullable PyReferrersLoader getReferrersLoader(); + /** + * @throws IllegalArgumentException if the type of the {@code var} is not supported + * or the corresponding array has more than two dimensions + */ ArrayChunk getArrayItems(PyDebugValue var, int rowOffset, int colOffset, int rows, int cols, String format) throws PyDebuggerException; @Nullable diff --git a/python/src/com/jetbrains/python/console/PydevConsoleCommunication.java b/python/src/com/jetbrains/python/console/PydevConsoleCommunication.java index e681c73c6d10..d34bf5a71311 100644 --- a/python/src/com/jetbrains/python/console/PydevConsoleCommunication.java +++ b/python/src/com/jetbrains/python/console/PydevConsoleCommunication.java @@ -603,6 +603,12 @@ public abstract class PydevConsoleCommunication extends AbstractConsoleCommunica GetArrayResponse ret = getPythonConsoleBackendClient().getArray(var.getName(), rowOffset, colOffset, rows, cols, format); return createArrayChunk(ret, this); } + catch (UnsupportedArrayTypeException e) { + throw new IllegalArgumentException(var.getType() + " is not supported", e); + } + catch (ExceedingArrayDimensionsException e) { + throw new IllegalArgumentException(var.getName() + " has more than two dimensions", e); + } catch (Exception e) { throw new PyDebuggerException("Evaluate in console failed", e); } diff --git a/python/src/com/jetbrains/python/debugger/containerview/PyDataViewerPanel.java b/python/src/com/jetbrains/python/debugger/containerview/PyDataViewerPanel.java index 97aee98afc92..c590a89c972f 100644 --- a/python/src/com/jetbrains/python/debugger/containerview/PyDataViewerPanel.java +++ b/python/src/com/jetbrains/python/debugger/containerview/PyDataViewerPanel.java @@ -176,7 +176,10 @@ public class PyDataViewerPanel extends JPanel { ApplicationManager.getApplication().executeOnPooledThread(() -> { try { ArrayChunk arrayChunk = debugValue.getFrameAccessor().getArrayItems(debugValue, 0, 0, -1, -1, getFormat()); - ApplicationManager.getApplication().invokeLater(() -> updateUI(arrayChunk, debugValue, strategy)); + ApplicationManager.getApplication().invokeLater(() -> updateUI(arrayChunk, strategy)); + } + catch (IllegalArgumentException e) { + setError(e.getLocalizedMessage()); } catch (PyDebuggerException e) { LOG.error(e); @@ -189,7 +192,8 @@ public class PyDataViewerPanel extends JPanel { apply(getSliceTextField().getText()); } - private void updateUI(@NotNull ArrayChunk chunk, @NotNull PyDebugValue debugValue, @NotNull DataViewStrategy strategy) { + private void updateUI(@NotNull ArrayChunk chunk, @NotNull DataViewStrategy strategy) { + PyDebugValue debugValue = chunk.getValue(); AsyncArrayTableModel model = strategy.createTableModel(chunk.getRows(), chunk.getColumns(), this, debugValue); model.addToCache(chunk); diff --git a/python/thrift/console-compile.sh b/python/thrift/console-compile.sh old mode 100644 new mode 100755