<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>http://wiki.cabal.mx/index.php?action=history&amp;feed=atom&amp;title=C%C3%B3mo_contribuir_a_StringTemplate</id>
	<title>Cómo contribuir a StringTemplate - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.cabal.mx/index.php?action=history&amp;feed=atom&amp;title=C%C3%B3mo_contribuir_a_StringTemplate"/>
	<link rel="alternate" type="text/html" href="http://wiki.cabal.mx/index.php?title=C%C3%B3mo_contribuir_a_StringTemplate&amp;action=history"/>
	<updated>2026-05-05T22:49:46Z</updated>
	<subtitle>Historial de revisiones para esta página en el wiki</subtitle>
	<generator>MediaWiki 1.32.1</generator>
	<entry>
		<id>http://wiki.cabal.mx/index.php?title=C%C3%B3mo_contribuir_a_StringTemplate&amp;diff=4551&amp;oldid=prev</id>
		<title>Patricio Páez: Python 3.3 es requisito, enlace a HowTo</title>
		<link rel="alternate" type="text/html" href="http://wiki.cabal.mx/index.php?title=C%C3%B3mo_contribuir_a_StringTemplate&amp;diff=4551&amp;oldid=prev"/>
		<updated>2013-02-25T22:32:57Z</updated>

		<summary type="html">&lt;p&gt;Python 3.3 es requisito, enlace a HowTo&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[http://www.stringtemplate.org/ StringTemplate] es un motor de plantillas que mantiene la separación entre vista y modelo en el patrón de diseño MVC.  Fue concebido por Terence Parr y originalmente fue desarrollado en Java.  La versión actual es 4.  Marq Kole implementó la versión 3 de StringTemplate en Python 2, Benjamin Niemann actualizó esa implementación a la versión 3.1 de StringTemplate.&lt;br /&gt;
&lt;br /&gt;
En la sesión de [[PythonCabal]] del 26 de enero de 2013 se mostraron los pasos para modificar la implementación de StringTemplate 3.1 que corre en  Python 2 para correr en Python 3.  Se hizo solamente una prueba muy elemental.  La implementación de StringTemplate en Python no tiene pruebas unitarias.&lt;br /&gt;
&lt;br /&gt;
En los pasos siguientes se utilizará la versión 3.3 del interpretador de Python.  Si tu sistema operativo no lo tiene, tienes que instalar Python 3.3 primero.  En el caso de GNU/Linux, si tu distribución no cuenta con un paquete &amp;#039;.rpm&amp;#039; o &amp;#039;.deb&amp;#039; de Python 3.3 ya compilado, lee cómo [[Compilar Python]] a partir del código fuente.&lt;br /&gt;
&lt;br /&gt;
= Pasos =&lt;br /&gt;
Versión resumida:&lt;br /&gt;
# Crear un entorno virtual con Python 3.3&lt;br /&gt;
# Antlr&lt;br /&gt;
## Descargar&lt;br /&gt;
## Convertir a Python 3 con &amp;#039;&amp;#039;2to3&amp;#039;&amp;#039;&lt;br /&gt;
## Aplicar parche &amp;#039;&amp;#039;antlr-python3.patch&amp;#039;&amp;#039;&lt;br /&gt;
## Prueba básica&lt;br /&gt;
# StringTemplate 3&lt;br /&gt;
## Descargar&lt;br /&gt;
## Convertir a Python 3 con &amp;#039;&amp;#039;2to3&amp;#039;&amp;#039;&lt;br /&gt;
## Aplicar parche &amp;#039;&amp;#039;st-python3.patch&amp;#039;&amp;#039;&lt;br /&gt;
## Prueba básica&lt;br /&gt;
&lt;br /&gt;
La secuencia de comandos:&lt;br /&gt;
* Entorno virtual con Python 3.3&lt;br /&gt;
 mkdir test-st&lt;br /&gt;
 cd test-st&lt;br /&gt;
 virtualenv -p python3.3 env3.3&lt;br /&gt;
* Antlr&lt;br /&gt;
 wget http://www.antlr2.org/download/antlr-2.7.7.tar.gz&lt;br /&gt;
 tar xf antlr-2.7.7.tar.gz&lt;br /&gt;
 cd antlr-2.7.7&lt;br /&gt;
 cd lib/python&lt;br /&gt;
 2to3 -w -n antlr/&lt;br /&gt;
 patch -p1 -i antlr-python3.patch&lt;br /&gt;
 env3.3/python setup.py&lt;br /&gt;
 cd ../../..&lt;br /&gt;
 python -c &amp;#039;import antlr&amp;#039;&lt;br /&gt;
* StringTemplate&lt;br /&gt;
 wget http://pypi.python.org/packages/source/s/stringtemplate3/stringtemplate3-3.1.tar.gz&lt;br /&gt;
 tar xf stringtemplate3-3.1.tar.gz&lt;br /&gt;
 cd stringtemplate3-3.1/&lt;br /&gt;
 2to3 -w -n stringtemplate3/&lt;br /&gt;
 patch -p1 -i st-python3.patch&lt;br /&gt;
 env3.3/python setup.py&lt;br /&gt;
 cd ..&lt;br /&gt;
 python -c &amp;#039;import StringTemplate3&amp;#039;&lt;br /&gt;
&lt;br /&gt;
= Parches =&lt;br /&gt;
* antlr-python3.patch&lt;br /&gt;
 diff -Naur -x &amp;#039;*pyc&amp;#039; antlr-2.7.7-ori/lib/python/antlr/antlr.py antlr-2.7.7/lib/python/antlr/antlr.py&lt;br /&gt;
 --- antlr-2.7.7-ori/lib/python/antlr/antlr.py	2006-11-01 15:37:17.000000000 -0600&lt;br /&gt;
 +++ antlr-2.7.7/lib/python/antlr/antlr.py	2013-01-18 03:47:45.000000000 -0600&lt;br /&gt;
 @@ -4,11 +4,11 @@&lt;br /&gt;
  ## get sys module&lt;br /&gt;
  import sys&lt;br /&gt;
  &lt;br /&gt;
 -version = sys.version.split()[0]&lt;br /&gt;
 -if version &amp;lt; &amp;#039;2.2.1&amp;#039;:&lt;br /&gt;
 -    False = 0&lt;br /&gt;
 -if version &amp;lt; &amp;#039;2.3&amp;#039;:&lt;br /&gt;
 -    True = not False&lt;br /&gt;
 +#version = sys.version.split()[0]&lt;br /&gt;
 +#if version &amp;lt; &amp;#039;2.2.1&amp;#039;:&lt;br /&gt;
 +#    False = 0&lt;br /&gt;
 +#if version &amp;lt; &amp;#039;2.3&amp;#039;:&lt;br /&gt;
 +#    True = not False&lt;br /&gt;
  &lt;br /&gt;
  ###xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx###&lt;br /&gt;
  ###                     global symbols                             ###&lt;br /&gt;
&lt;br /&gt;
* st-python3.patch&lt;br /&gt;
 diff -Naur -x &amp;#039;*pyc&amp;#039; stringtemplate3-3.1-ori/stringtemplate3/language/ActionEvaluator.py stringtemplate3-3.1/stringtemplate3/language/ActionEvaluator.py&lt;br /&gt;
 --- stringtemplate3-3.1-ori/stringtemplate3/language/ActionEvaluator.py	2013-01-26 15:21:21.000000000 -0600&lt;br /&gt;
 +++ stringtemplate3-3.1/stringtemplate3/language/ActionEvaluator.py	2013-01-18 03:50:20.000000000 -0600&lt;br /&gt;
 @@ -3,11 +3,11 @@&lt;br /&gt;
  import sys&lt;br /&gt;
  import antlr&lt;br /&gt;
  &lt;br /&gt;
 -version = sys.version.split()[0]&lt;br /&gt;
 -if version &amp;lt; &amp;#039;2.2.1&amp;#039;:&lt;br /&gt;
 -    False = 0&lt;br /&gt;
 -if version &amp;lt; &amp;#039;2.3&amp;#039;:&lt;br /&gt;
 -    True = not False&lt;br /&gt;
 +#version = sys.version.split()[0]&lt;br /&gt;
 +#if version &amp;lt; &amp;#039;2.2.1&amp;#039;:&lt;br /&gt;
 +#    False = 0&lt;br /&gt;
 +#if version &amp;lt; &amp;#039;2.3&amp;#039;:&lt;br /&gt;
 +#    True = not False&lt;br /&gt;
  ### header action &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
  from stringtemplate3.language.CatIterator import CatList&lt;br /&gt;
  from stringtemplate3.language.StringTemplateAST import StringTemplateAST&lt;br /&gt;
 diff -Naur -x &amp;#039;*pyc&amp;#039; stringtemplate3-3.1-ori/stringtemplate3/language/ActionLexer.py stringtemplate3-3.1/stringtemplate3/language/ActionLexer.py&lt;br /&gt;
 --- stringtemplate3-3.1-ori/stringtemplate3/language/ActionLexer.py	2013-01-26 15:21:23.000000000 -0600&lt;br /&gt;
 +++ stringtemplate3-3.1/stringtemplate3/language/ActionLexer.py	2013-01-18 03:50:44.000000000 -0600&lt;br /&gt;
 @@ -4,10 +4,10 @@&lt;br /&gt;
  import antlr&lt;br /&gt;
  &lt;br /&gt;
  version = sys.version.split()[0]&lt;br /&gt;
 -if version &amp;lt; &amp;#039;2.2.1&amp;#039;:&lt;br /&gt;
 -    False = 0&lt;br /&gt;
 -if version &amp;lt; &amp;#039;2.3&amp;#039;:&lt;br /&gt;
 -    True = not False&lt;br /&gt;
 +#if version &amp;lt; &amp;#039;2.2.1&amp;#039;:&lt;br /&gt;
 +#    False = 0&lt;br /&gt;
 +#if version &amp;lt; &amp;#039;2.3&amp;#039;:&lt;br /&gt;
 +#    True = not False&lt;br /&gt;
  ### header action &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
  from stringtemplate3.language.StringTemplateToken import StringTemplateToken&lt;br /&gt;
  import stringtemplate3&lt;br /&gt;
 diff -Naur -x &amp;#039;*pyc&amp;#039; stringtemplate3-3.1-ori/stringtemplate3/language/ActionParser.py stringtemplate3-3.1/stringtemplate3/language/ActionParser.py&lt;br /&gt;
 --- stringtemplate3-3.1-ori/stringtemplate3/language/ActionParser.py	2013-01-26 15:21:27.000000000 -0600&lt;br /&gt;
 +++ stringtemplate3-3.1/stringtemplate3/language/ActionParser.py	2013-01-18 03:51:07.000000000 -0600&lt;br /&gt;
 @@ -3,11 +3,11 @@&lt;br /&gt;
  import sys&lt;br /&gt;
  import antlr&lt;br /&gt;
  &lt;br /&gt;
 -version = sys.version.split()[0]&lt;br /&gt;
 -if version &amp;lt; &amp;#039;2.2.1&amp;#039;:&lt;br /&gt;
 -    False = 0&lt;br /&gt;
 -if version &amp;lt; &amp;#039;2.3&amp;#039;:&lt;br /&gt;
 -    True = not False&lt;br /&gt;
 +#version = sys.version.split()[0]&lt;br /&gt;
 +#if version &amp;lt; &amp;#039;2.2.1&amp;#039;:&lt;br /&gt;
 +#    False = 0&lt;br /&gt;
 +#if version &amp;lt; &amp;#039;2.3&amp;#039;:&lt;br /&gt;
 +#    True = not False&lt;br /&gt;
  ### header action &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
  from stringtemplate3.language.StringTemplateToken import StringTemplateToken&lt;br /&gt;
  import stringtemplate3&lt;br /&gt;
 diff -Naur -x &amp;#039;*pyc&amp;#039; stringtemplate3-3.1-ori/stringtemplate3/language/AngleBracketTemplateLexer.py stringtemplate3-3.1/stringtemplate3/language/AngleBracketTemplateLexer.py&lt;br /&gt;
 --- stringtemplate3-3.1-ori/stringtemplate3/language/AngleBracketTemplateLexer.py	2013-01-26 15:21:29.000000000 -0600&lt;br /&gt;
 +++ stringtemplate3-3.1/stringtemplate3/language/AngleBracketTemplateLexer.py	2013-01-18 03:51:34.000000000 -0600&lt;br /&gt;
 @@ -3,11 +3,11 @@&lt;br /&gt;
  import sys&lt;br /&gt;
  import antlr&lt;br /&gt;
  &lt;br /&gt;
 -version = sys.version.split()[0]&lt;br /&gt;
 -if version &amp;lt; &amp;#039;2.2.1&amp;#039;:&lt;br /&gt;
 -    False = 0&lt;br /&gt;
 -if version &amp;lt; &amp;#039;2.3&amp;#039;:&lt;br /&gt;
 -    True = not False&lt;br /&gt;
 +#version = sys.version.split()[0]&lt;br /&gt;
 +#if version &amp;lt; &amp;#039;2.2.1&amp;#039;:&lt;br /&gt;
 +#    False = 0&lt;br /&gt;
 +#if version &amp;lt; &amp;#039;2.3&amp;#039;:&lt;br /&gt;
 +#    True = not False&lt;br /&gt;
  ### header action &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
  import stringtemplate3&lt;br /&gt;
  import stringtemplate3.language.TemplateParser&lt;br /&gt;
 diff -Naur -x &amp;#039;*pyc&amp;#039; stringtemplate3-3.1-ori/stringtemplate3/language/DefaultTemplateLexer.py stringtemplate3-3.1/stringtemplate3/language/DefaultTemplateLexer.py&lt;br /&gt;
 --- stringtemplate3-3.1-ori/stringtemplate3/language/DefaultTemplateLexer.py	2013-01-26 15:21:33.000000000 -0600&lt;br /&gt;
 +++ stringtemplate3-3.1/stringtemplate3/language/DefaultTemplateLexer.py	2013-01-18 03:52:18.000000000 -0600&lt;br /&gt;
 @@ -4,10 +4,10 @@&lt;br /&gt;
  import antlr&lt;br /&gt;
  &lt;br /&gt;
  version = sys.version.split()[0]&lt;br /&gt;
 -if version &amp;lt; &amp;#039;2.2.1&amp;#039;:&lt;br /&gt;
 -    False = 0&lt;br /&gt;
 -if version &amp;lt; &amp;#039;2.3&amp;#039;:&lt;br /&gt;
 -    True = not False&lt;br /&gt;
 +#if version &amp;lt; &amp;#039;2.2.1&amp;#039;:&lt;br /&gt;
 +#    False = 0&lt;br /&gt;
 +#if version &amp;lt; &amp;#039;2.3&amp;#039;:&lt;br /&gt;
 +#    True = not False&lt;br /&gt;
  ### header action &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
  import stringtemplate3&lt;br /&gt;
  from stringtemplate3.language.ChunkToken import ChunkToken&lt;br /&gt;
 diff -Naur -x &amp;#039;*pyc&amp;#039; stringtemplate3-3.1-ori/stringtemplate3/language/GroupLexer.py stringtemplate3-3.1/stringtemplate3/language/GroupLexer.py&lt;br /&gt;
 --- stringtemplate3-3.1-ori/stringtemplate3/language/GroupLexer.py	2013-01-26 15:21:35.000000000 -0600&lt;br /&gt;
 +++ stringtemplate3-3.1/stringtemplate3/language/GroupLexer.py	2013-01-18 03:52:40.000000000 -0600&lt;br /&gt;
 @@ -4,10 +4,10 @@&lt;br /&gt;
  import antlr&lt;br /&gt;
  &lt;br /&gt;
  version = sys.version.split()[0]&lt;br /&gt;
 -if version &amp;lt; &amp;#039;2.2.1&amp;#039;:&lt;br /&gt;
 -    False = 0&lt;br /&gt;
 -if version &amp;lt; &amp;#039;2.3&amp;#039;:&lt;br /&gt;
 -    True = not False&lt;br /&gt;
 +#if version &amp;lt; &amp;#039;2.2.1&amp;#039;:&lt;br /&gt;
 +#    False = 0&lt;br /&gt;
 +#if version &amp;lt; &amp;#039;2.3&amp;#039;:&lt;br /&gt;
 +#    True = not False&lt;br /&gt;
  ### header action &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
  from .ASTExpr import *&lt;br /&gt;
  import stringtemplate3&lt;br /&gt;
 diff -Naur -x &amp;#039;*pyc&amp;#039; stringtemplate3-3.1-ori/stringtemplate3/language/GroupParser.py stringtemplate3-3.1/stringtemplate3/language/GroupParser.py&lt;br /&gt;
 --- stringtemplate3-3.1-ori/stringtemplate3/language/GroupParser.py	2013-01-26 15:21:36.000000000 -0600&lt;br /&gt;
 +++ stringtemplate3-3.1/stringtemplate3/language/GroupParser.py	2013-01-18 03:53:00.000000000 -0600&lt;br /&gt;
 @@ -4,10 +4,10 @@&lt;br /&gt;
  import antlr&lt;br /&gt;
  &lt;br /&gt;
  version = sys.version.split()[0]&lt;br /&gt;
 -if version &amp;lt; &amp;#039;2.2.1&amp;#039;:&lt;br /&gt;
 -    False = 0&lt;br /&gt;
 -if version &amp;lt; &amp;#039;2.3&amp;#039;:&lt;br /&gt;
 -    True = not False&lt;br /&gt;
 +#if version &amp;lt; &amp;#039;2.2.1&amp;#039;:&lt;br /&gt;
 +#    False = 0&lt;br /&gt;
 +#if version &amp;lt; &amp;#039;2.3&amp;#039;:&lt;br /&gt;
 +#    True = not False&lt;br /&gt;
  ### header action &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
  from .ASTExpr import *&lt;br /&gt;
  import stringtemplate3&lt;br /&gt;
 diff -Naur -x &amp;#039;*pyc&amp;#039; stringtemplate3-3.1-ori/stringtemplate3/language/InterfaceLexer.py stringtemplate3-3.1/stringtemplate3/language/InterfaceLexer.py&lt;br /&gt;
 --- stringtemplate3-3.1-ori/stringtemplate3/language/InterfaceLexer.py	2013-01-26 15:21:37.000000000 -0600&lt;br /&gt;
 +++ stringtemplate3-3.1/stringtemplate3/language/InterfaceLexer.py	2013-01-18 03:53:26.000000000 -0600&lt;br /&gt;
 @@ -3,11 +3,11 @@&lt;br /&gt;
  import sys&lt;br /&gt;
  import antlr&lt;br /&gt;
  &lt;br /&gt;
 -version = sys.version.split()[0]&lt;br /&gt;
 -if version &amp;lt; &amp;#039;2.2.1&amp;#039;:&lt;br /&gt;
 -    False = 0&lt;br /&gt;
 -if version &amp;lt; &amp;#039;2.3&amp;#039;:&lt;br /&gt;
 -    True = not False&lt;br /&gt;
 +#version = sys.version.split()[0]&lt;br /&gt;
 +#if version &amp;lt; &amp;#039;2.2.1&amp;#039;:&lt;br /&gt;
 +#    False = 0&lt;br /&gt;
 +#if version &amp;lt; &amp;#039;2.3&amp;#039;:&lt;br /&gt;
 +#    True = not False&lt;br /&gt;
  ### header action &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
  #&lt;br /&gt;
  # [The &amp;quot;BSD licence&amp;quot;]&lt;br /&gt;
 diff -Naur -x &amp;#039;*pyc&amp;#039; stringtemplate3-3.1-ori/stringtemplate3/language/InterfaceParser.py stringtemplate3-3.1/stringtemplate3/language/InterfaceParser.py&lt;br /&gt;
 --- stringtemplate3-3.1-ori/stringtemplate3/language/InterfaceParser.py	2013-01-26 15:21:37.000000000 -0600&lt;br /&gt;
 +++ stringtemplate3-3.1/stringtemplate3/language/InterfaceParser.py	2013-01-18 03:54:00.000000000 -0600&lt;br /&gt;
 @@ -3,11 +3,11 @@&lt;br /&gt;
  import sys&lt;br /&gt;
  import antlr&lt;br /&gt;
  &lt;br /&gt;
 -version = sys.version.split()[0]&lt;br /&gt;
 -if version &amp;lt; &amp;#039;2.2.1&amp;#039;:&lt;br /&gt;
 -    False = 0&lt;br /&gt;
 -if version &amp;lt; &amp;#039;2.3&amp;#039;:&lt;br /&gt;
 -    True = not False&lt;br /&gt;
 +#version = sys.version.split()[0]&lt;br /&gt;
 +#if version &amp;lt; &amp;#039;2.2.1&amp;#039;:&lt;br /&gt;
 +#    False = 0&lt;br /&gt;
 +#if version &amp;lt; &amp;#039;2.3&amp;#039;:&lt;br /&gt;
 +#    True = not False&lt;br /&gt;
  ### header action &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
  #&lt;br /&gt;
  # [The &amp;quot;BSD licence&amp;quot;]&lt;br /&gt;
 diff -Naur -x &amp;#039;*pyc&amp;#039; stringtemplate3-3.1-ori/stringtemplate3/language/TemplateParser.py stringtemplate3-3.1/stringtemplate3/language/TemplateParser.py&lt;br /&gt;
 --- stringtemplate3-3.1-ori/stringtemplate3/language/TemplateParser.py	2013-01-26 15:21:38.000000000 -0600&lt;br /&gt;
 +++ stringtemplate3-3.1/stringtemplate3/language/TemplateParser.py	2013-01-18 03:51:56.000000000 -0600&lt;br /&gt;
 @@ -4,10 +4,10 @@&lt;br /&gt;
  import antlr&lt;br /&gt;
  &lt;br /&gt;
  version = sys.version.split()[0]&lt;br /&gt;
 -if version &amp;lt; &amp;#039;2.2.1&amp;#039;:&lt;br /&gt;
 -    False = 0&lt;br /&gt;
 -if version &amp;lt; &amp;#039;2.3&amp;#039;:&lt;br /&gt;
 -    True = not False&lt;br /&gt;
 +#if version &amp;lt; &amp;#039;2.2.1&amp;#039;:&lt;br /&gt;
 +#    False = 0&lt;br /&gt;
 +#if version &amp;lt; &amp;#039;2.3&amp;#039;:&lt;br /&gt;
 +#    True = not False&lt;br /&gt;
  ### header action &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
  import stringtemplate3&lt;br /&gt;
  from stringtemplate3.language.ChunkToken import ChunkToken&lt;br /&gt;
&lt;br /&gt;
[[Category: HowTos]]&lt;/div&gt;</summary>
		<author><name>Patricio Páez</name></author>
		
	</entry>
</feed>