gvSIG bugs #3976

The Jython console can't be executed

Added by Antonio Falciano over 10 years ago. Updated about 10 years ago.

Status:Closed% Done:

0%

Priority:NormalSpent time:-
Assignee:Joaquín del Cerro Murciano
Category:Scripting
Target version:2.3.0-2426 (rev. org.gvsig.desktop-2.0.132, NOT USABLE)
Severity:Major Add-on version:
gvSIG version:2.3.0 Add-on build:
gvSIG build:2413 Add-on resolve version:
Operative System: Add-on resolve build:
Keywords: Proyecto:
Has patch: Hito:
Add-on name:Unknown

Description

The Jython console can't be executed, because of #3975.

jython_console.png (78.7 KB) Antonio Falciano, 02/25/2016 05:56 PM

1602

Related issues

Related to Application: gvSIG desktop - gvSIG bugs #3975: Scripts can't be executed because of a wrong sys.path Closed 01/02/2016
Related to Application: gvSIG desktop - gvSIG feature requests #4133: Downgrade the Jython standalone jar to 2.7-rc1 version Won't fix 02/25/2016

Associated revisions

Revision 580
Added by Joaquín del Cerro Murciano about 10 years ago

refs #3976, patch console.py to allow runing in jython 2.7.1

History

#1 Updated by Joaquín del Cerro Murciano over 10 years ago

  • Related to gvSIG bugs #3975: Scripts can't be executed because of a wrong sys.path added

#2 Updated by Antonio Falciano over 10 years ago

  • Target version set to 2.3.0-2447-final (rev. org.gvsig.desktop-2.0.153)

After the fix of #3975, an AttributeError occurs when executing the Jython console in build 2416:

ERROR AWT-EventQueue-0 org.gvsig.andami.messages.NotificationManager - org.gvsig.scripting.CompileErrorException: AttributeError: [...]
Caused by: Traceback (most recent call last):
  File "<script>", line 1, in <module>
  File "C:\gvSIG-desktop-2.3.0-2416_x86_64\gvSIG\extensiones\org.gvsig.scripting.app.mainplugin\scripting\lib\console\console.py", line 33, in <module>
    class Console:
  File "C:\gvSIG-desktop-2.3.0-2416_x86_64\gvSIG\extensiones\org.gvsig.scripting.app.mainplugin\scripting\lib\console\console.py", line 34, in Console
    PROMPT = sys.ps1
AttributeError: '<reflected field public org.python.core.PyObject o' object has no attribute 'ps1'

#3 Updated by Antonio Falciano about 10 years ago

The error reported above:

AttributeError: '<reflected field public org.python.core.PyObject o' object has no attribute 'ps1'
was introduced by Jython 2.7. There's an open issue about it:
https://github.com/don/jythonconsole/issues/33
Instead, trying to execute the console (jythonconsole-0.0.7) with the old Jython 2.5.3 it works fine.

#4 Updated by Antonio Falciano about 10 years ago

I get the impression that the only way to solve this issue is to downgrade again the Jython jar to 2.5.x version. It seems also that the jythonconsole version is a bit outdated (about 2006), so this one could be updated to 0.0.7: version (about 2009). The main advantage is that the code completion looks more stable.

#5 Updated by Antonio Falciano about 10 years ago

I've downgraded the Jython jar to 2.5.4-rc1 version and updated jythonconsole to 0.0.7 in a RC1 installation. There's only a simple fix to do in console.py (switch EXIT_ON_CLOSE to DISPOSE_ON_CLOSE at row 416) and it works fine, like in the screenshot in attachment.

#6 Updated by Antonio Falciano about 10 years ago

As stated in https://github.com/don/jythonconsole/issues/33, jythonconsole works fine until Jython 2.7-rc1. So I've replaced the Jython jar in Scripting and verified that it works also with this configuration (Jython 2.7-rc1, jythonconsole 0.0.7), so this is the best compromise we can reach at the moment.

#7 Updated by Joaquín del Cerro Murciano about 10 years ago

  • Target version changed from 2.3.0-2447-final (rev. org.gvsig.desktop-2.0.153) to 2.3.0-2426 (rev. org.gvsig.desktop-2.0.132, NOT USABLE)
  • Assignee set to Joaquín del Cerro Murciano

Hola Antonio,
siguiendo los enlaces que pones, al parecer sys.ps1 y sys.ps2 solo deben estar definidos en modo interactivo.
Lo que sucede es que la consola de jython es antigua y no se ha actualizado desde hace algun tiempo y no tiene en cuenta alguna de las nuevas especificaciones.

https://docs.python.org/2/library/sys.html#sys.ps1
https://hg.python.org/jython/rev/23c3effa5d4f

Voy a parchear ligeramente console.py para rodear el problema y podamos seguir trabajando con las ultimas versiones del interprete de jython.

Index: console.py
===================================================================
--- console.py  (revisión: 574)
+++ console.py  (copia de trabajo)
@@ -29,6 +29,9 @@
     else:
         print >> sys.stderr, "%s = %s" % (name, value)

+if not hasattr(sys,"ps1"):
+    sys.ps1 ='>>> '
+    sys.ps2 ='... '

 class Console:
     PROMPT = sys.ps1

#8 Updated by Joaquín del Cerro Murciano about 10 years ago

#9 Updated by Joaquín del Cerro Murciano about 10 years ago

  • Status changed from New to Fixed

#10 Updated by Antonio Falciano about 10 years ago

Hi Joaquín,
I've just verified that patching console.py solves the issue without the need to downgrade the Jython jar standalone. Thank you very much.

#11 Updated by Antonio Falciano about 10 years ago

  • Status changed from Fixed to Closed

Also available in: Atom PDF