private <T> T getParameter(PyDictionary meta, String key, Class<T> targetType, T defaultValue) { if (!meta.containsKey(key)) { return defaultValue; } Object value = meta.get(key); return (T) Converters.convert(value, targetType); }
@Override public Map<String, Parameter<?>> getOutputs(ScriptEngine engine) throws ScriptException { PyDictionary outputs = (PyDictionary) process(engine).__getattr__("outputs"); Map<String, Parameter<?>> map = new TreeMap<String, Parameter<?>>(); for (String name : (List<String>) outputs.keys()) { PyTuple output = (PyTuple) outputs.get(name); Object type = output.__getitem__(0); Object desc = output.__getitem__(1); // map every key in the optional dictionary as parameter metadata entry Map<String, Object> metadata = null; if (output.size() == 3) { PyDictionary meta = (PyDictionary) output.get(2); if (meta != null && !meta.isEmpty()) { metadata = new HashMap<String, Object>(); for (Object key : meta.keySet()) { metadata.put((String) key, meta.get(key)); } } } map.put(name, parameter(name, type, 1, 1, desc, null, metadata)); } return map; }
private void load_ext(int length) { int code = read_binint(length); // TODO: support _extension_cache PyObject key = inverted_registry.get(Py.newInteger(code)); if (key == null) { throw new PyException(Py.ValueError, "unregistered extension code " + code); } String module = key.__finditem__(0).toString(); String name = key.__finditem__(1).toString(); push(find_class(module, name)); }
PyObject extCode = extension_registry.get(extKey); if(extCode != Py.None) { int code = ((PyInteger)extCode).getValue();