Re: [Python-es] Autenticación de aplicación en Twitter mediante Oauth

2014-09-02 Por tema Hernán Foffani

El 01/09/2014, a las 09:45, Manuel Eduardo Cortéz Vallejo 
manuelcorte...@gmail.com escribió:

 Buen día,
 
 Hoy quisiera preguntar si alguien conoce un sitio donde pueda encontrar 
 ejemplos sobre cómo autenticar una aplicación Twitter mediante Oauth de la 
 forma en la que se autentican las aplicaciones web.
 


Lo que te puedo enviar es un ejemplo de Twitter OAuth pero para 
desarrolladores, para obtener un stream de tweets.
No se si eso te interesa.

Saludos,
Hernán.

___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Obtener índices para un resample con Pandas

2014-07-08 Por tema Hernán Foffani
No se si hay un atajo en Pandas, pero el procedimiento estándar en estos casos 
es etiquetar cada fila con la agrupación y con el resultado de la función de 
agregación. Luego filtras las observaciones que cumplen con una condición dada, 
por ej. que el valor de la observación sea igual al total agregado por grupo.


Hernán M. Foffani





El 08/07/2014, a las 15:51, Kiko kikocorre...@gmail.com escribió:

 Hola.
 
 Después de darle unas pocas vueltas y de resolverlo de forma poco eficiente 
 voy a preguntar por aquí a ver si alguien más listo o con más conocimientos 
 que yo sobre pandas/numpy me puede ayudar.
 
 El problema:
 Estoy usando pandas para sacar los máximos de una serie temporal dependiendo 
 de un periodo de tiempo, mensual, anual,...
 
 df.resample('M', how = 'max')
 
 Eso me da los máximos de cada mes. Pero también me interesa saber la fecha en 
 que ocurren esos máximos. resample no devuelve los índices, cosa lógica ya 
 que el how no tiene porque ser un valor y sí un valor obtenido a partir de 
 varios valores por lo que el índice sería ambiguo para eso. Pero me pregunto 
 si existe algo en Pandas que desconozca que permita obtener además los 
 índices de una operación parecida sin tener que meterme a trastear a 
 buscarlos yo.
 
 Muchas gracias por adelantado.
 
 Saludos.
 ___
 Python-es mailing list
 Python-es@python.org
 https://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/

___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] ¿ Injección de código con decoradores o herencia ?

2013-10-25 Por tema Hernán Foffani
 Y unas dudas colaterales:
 
 * Por qué tanto setattr(objeto, atributo, valor)?
   Si el nombre del atributo ya lo sabemos, para que usar la cadena si 
   vale con objeto.atributo = valor
 

En los ejemplos de este hilo es lo mismo.

 * Que tiene de malo el concepto de clase Mixin, que solo existe para 
 complementar a otra clase?
 

Ninguno de por sí. Es mas, es un patrón perfectamente válido para los
lenguajes de programación que admiten herencia múltiple. Existe desde
hace décadas y en la biblioteca estándar de Python se usa bastante.

Con todo se pueden cometer abusos y mas con Python por la libertad que
permite. El problema mas común es cuando los mixins tienen cantidades
elevadas de métodos. Controlar aquí la resolución de conflictos es
complicado porque suele ser difícil de diagnosticar y mas aún de corregir.

Plone y las primera versión de Zope contribuyeron a su desprestigio,
pero son casos especiales, frameworks gigantes, y aquí sí concuerdo con
la idea que los mixins no son el mecanismo adecuado.

Una regla simplona es que mientras la suma de las cantidades de nombres
a incorporar de todos los mixins no supere la docena estás dentro de la
zona segura.

Saludos,
Hernán.

___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] ¿ Injección de código con decoradores o herencia ?

2013-10-23 Por tema Hernán Foffani
 Hernan M. F
 Particularmente encuentro el ejemplo que presentas como poco elegante. Porque 
 en ese caso la clase C tiene una dependencia fija en el código al método F() 
 de la clase D la cual no puede ser modificada (bueno, si puede ser modificada 
 empleando settatr(), lo que hace a Python excelente desde mi punto de vista). 
 La cuestión es que se programa una vez, pero se modifica el código y se 
 revisa múltiples veces y en este caso el usuario de C tiene que leer todo el 
 código para darse cuenta de que cambiar si necesita reemplazar D.F por otra 
 cosa. Y finalmente si F es una función que no dependa de que argumentos 
 reciba D en el constructor, entonces no es necesario que sea miembro de la 
 clase D. Yo pondría tu ejemplo de la siguiente forma:
 
 class C:
  def __init__(self, f=None):
if f is None:
  d = D()
  f = d.f
 
settatr(self, 'f', f)
 
  def f(self):
raise NotImplementedError()
 

La dependencia la puedes quitar de forma similar a lo has puesto (inicializa 
con None, condicionalmente,
o como creas mas conveniente). Flexibiliza la firma usando kwargs, etc...

class C (B):
def __init__(self, f_provider = D()):
   self._f_provider = f_provider
def F(self):
   self._f_provider.F()

Mi respuesta anterior era prevenir el abuso de setattr cuando hay patrones de 
uso que son mucho
mas sencillos y prácticos.

Piensa en el caso de uso. Si inyectas vía setattr te impide que puedas ajustar 
luego el comportamiento.
Lo que se suele  necesitar en los casos reales es hacer algo antes y/o después 
de la invocación al
suministrador del servicio. Encima si inyectas F a B o C así, ¿cómo accede F a 
datos internos de B?

…
def F(self):
hacer_algo_previo_con_self()
self._f_provider.F( o_invocar_F_con_alguna_opción_especifica )
hacer_otra_cosa_con_self_con_el_resultado_de_F()


 Esta variante le deja claro al usuario que solo con parametrizar la clase C 
 puede reemplazar la maquinaria externa que consume la clase. Finalmente 
 quiero decir (mi criterio nuevamente y el de algunas personas que asi lo 
 ponen en sus blogs) que la herencia multiple no es la forma de inyectar 
 comportamiento en una clase y que debe ser usada con mucho cuidado. Herencia 
 es herencia, una persona hereda de animal pero un navegador web no hereda de 
 conexión de red solo porque la use y la herencia lo pueda hacer parecer que 
 funciona.

Es la discusión de décadas y hay opiniones de todo tipo. No voy a entrar en 
ésta, a no ser que hablemos de casos concreto
de código, no tengo intención definir qué es ser.

Como dije en mi mensaje anterior lo formal en Python es usar abc. (Ver ejemplo 
de Chema en un mail posterior).


___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Entrevista a GvR

2013-08-28 Por tema Hernán Foffani
 Yo lo que he sacado en claro de esta entrevista es que si queremos un
 lenguaje a nuestro gusto, hemos de escribirlo nosotros mientras dejamos que
 crezca nuestra barba ;-)
 
 No es sólo por el lenguaje. La verdadera potencia está, hoy en día, en
 los compiladores, como el ghc de haskell o el de scala. La inferencia
 de tipos de estos compiladores han reducido mucho las ventajas de usar
 lenguajes dinámicos.
 
 Python3 es un buen lavado de cara del lenguaje, pero python debe
 evolucionar más allá de CPython si no quiere quedarse fuera de la
 programación de móviles y para la nube.
 

Pero algo ha cambiado en estos últimos 10 años. Antes Python *era* la
implementación en CPython pero eso ya no es así, hay mas respeto por
el resto de los intérpretes, específicamente jython, pypy, ironpython.

En mi opinión hay otros temas que son menos volados, mas aburridos
si se quiere, que resolverlos es extraordinariamente complicado, como
la dependencia de Python de la existencia de un file system. O en
términos mas generales, la dependencia de la biblioteca estándar de
servicios del sistema operativo.

-Hernán.

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Entrevista a GvR

2013-08-28 Por tema Hernán Foffani
  ¿Qué opinión os merece Julia? un lenguaje basado parcialmente en Python.
 

Mmm… No se yo…

mypy (http://www.mypy-lang.org) quizás tenga algún futuro. Está dentro de la 
línea de
pensamiento de Guido que es pesimista sobre la inferencia de tipos en Python sin
ayuditas. Al menos GvR ha hecho un retweet del proyecto el mes pasado, lo que
viniendo de él es todo un detalle je je.

Por otro lado mi capacidad de predicción sobre el éxito futuro de los lenguajes 
de
programación es nula. Jamás me hubiera imaginado que tarde o temprano *todos*
programaríamos algo en JS. Vale que es por el navegador ¡pero es que ahora con
nodejs resulta que también en el servidor! ¡Argh!


___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Entrevista a GvR

2013-08-27 Por tema Hernán Foffani

El 27/08/2013, a las 14:10, Chema Cortes pych...@gmail.com escribió:

 2013/8/26 Hernán M. F. hfoff...@gmail.com:
 En slashdot.
 http://developers.slashdot.org/firehose.pl?op=viewtype=storysid=13/08/25/2115204
 
 No parece que haya mucha novedad. Sigue renegando de la programación
 funcional, a pesar de reconocer sus ventajas, y sigue con CPython como
 la implementación locomotora para el desarrollo del lenguaje.
 
 Al menos ya nombra scala, aunque sea para menospreciarlo como algo
 sólo para listos. Esperaré otro año más a ver si cambia la cosa.
 

Jajaja! Es verdad, no dice nada nuevo. La entrevista, sin embargo, puede ser
útil para aquellos que conocen Python desde hace poco. Sobre todo para
enterarse de cómo es el tío y qué idea tiene de su lenguaje.

A propósito de Scala, cuando leí lo que decía me acordé de vos. je je je.

En mi caso con los años he aprendido a esperar poquísimos cambios en el
lenguaje. ¡El PEP de programación asincrónica fue como si me lo hubiera
traído Santa Claus en persona!


___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] conflicto de versiones python

2013-08-23 Por tema Hernán Foffani
En virtualenv estableces el entorno haciendo workon blender (o como lo hayas 
llamado)
en la línea de comandos y ya está.

Hernán M. Foffani


El 22/08/2013, a las 19:57, lesthack lesth...@gmail.com escribió:

 
 Si, virtualenv es una buena opción, solo tendría que indicarle a Blender 
 donde esta la ruta de su entorno aislado.
 
 Saludos !
 
 
 2013/8/22 Hernán Foffani hfoff...@gmail.com
 
  Usa virtualenv...
  es una opción.
 
 
  El 22 de agosto de 2013 09:07, lesthack lesth...@gmail.com escribió:
  Una forma muy sencilla de saber a que versión apunta /usr/bin/python es 
  simplemente ejecutarlo.
 
  $ python
  Python 2.7.3 (default, Apr 10 2013, 05:46:21)
  [GCC 4.6.3] on linux2
  Type help, copyright, credits or license for more information.
 
  En mi caso por ejemplo tengo predefinido la 2.7.3.
 
  Si quisieras cambiar la versión, remplaza /usr/bin/python mediante un 
  enlace simbólico a la versión que desees.
 
  ln -sf /usr/bin/python2.6 /usr/bin/python
 
  Saludos !
 
 
  2013/8/22 Ricardo Mendoza pgsql...@gmail.com
  Saludos, tengo un problema que se lo atribuyo a python. Intento iniciar
  Blender instalado por medio de apt, en debian 7, pero al revisar veo
  que tengo tres versiones de python 2.6,2.7,3.2. ¿Como puedo hacer para
  que blender arranque con la version correcta de python?.
 
  FAQ: http://python-es-faq.wikidot.com/
 
 
 Sí, yo también recomiendo virtualenv. Especialmente el wrapper:
 http://virtualenvwrapper.readthedocs.org/en/latest/
 
 Le dedicas unos minutos una vez pero luego te blindas de cualquier conflicto
 futuro entre versiones de python y/o paquetes.
 
 -Hernán.
 
 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/
 
 
 
 -- 
 
 
 ISC. Jorge Luis Hernández C.
 Desarrollador de Software y Tecnologías Libres
 
 Colaborador GNU/Linux Debian México
 http://lesthack.com.mx
 http://blog.debian.mx/
 @lesthack
 
 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] conflicto de versiones python

2013-08-22 Por tema Hernán Foffani

 Usa virtualenv...
 es una opción.
 
 
 El 22 de agosto de 2013 09:07, lesthack lesth...@gmail.com escribió:
 Una forma muy sencilla de saber a que versión apunta /usr/bin/python es 
 simplemente ejecutarlo.
 
 $ python
 Python 2.7.3 (default, Apr 10 2013, 05:46:21) 
 [GCC 4.6.3] on linux2
 Type help, copyright, credits or license for more information.
 
 En mi caso por ejemplo tengo predefinido la 2.7.3.
 
 Si quisieras cambiar la versión, remplaza /usr/bin/python mediante un enlace 
 simbólico a la versión que desees.
 
 ln -sf /usr/bin/python2.6 /usr/bin/python
 
 Saludos !
 
 
 2013/8/22 Ricardo Mendoza pgsql...@gmail.com
 Saludos, tengo un problema que se lo atribuyo a python. Intento iniciar
 Blender instalado por medio de apt, en debian 7, pero al revisar veo
 que tengo tres versiones de python 2.6,2.7,3.2. ¿Como puedo hacer para
 que blender arranque con la version correcta de python?.
 
 FAQ: http://python-es-faq.wikidot.com/


Sí, yo también recomiendo virtualenv. Especialmente el wrapper:
http://virtualenvwrapper.readthedocs.org/en/latest/

Le dedicas unos minutos una vez pero luego te blindas de cualquier conflicto
futuro entre versiones de python y/o paquetes.

-Hernán.

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Eficiencia de las listas

2013-08-06 Por tema Hernán Foffani
Podrías utilizar buffer (memoryview en Python 3)...
Cortar es trivial, volver a empalmar no tanto aunque quizás
puedas hacer un wrapper e implementar el pegado en forma
virtual.

O directamente array.

Hernán M. Foffani





El 05/08/2013, a las 21:54, Chema Cortes pych...@gmail.com escribió:

 Últimamente, estoy realizando estudios sobre la eficiencia de
 distintos códigos python. Mirando qué tipo de colección podía ser más
 eficiente según qué tareas, me encuentro con el siguiente párrafo en
 la documentación de [deque][1]:
 
 Deques support thread-safe, memory efficient appends and pops from
 either side of the deque with approximately the same O(1) performance
 in either direction.
 
 Though list objects support similar operations, they are optimized for
 fast fixed-length operations and incur O(n) memory movement costs for
 pop(0) and insert(0, v) operations which change both the size and
 position of the underlying data representation.
 
 He comprobado que, efectivamente, el costo de insertar elementos al
 principio de una lista es mucho mayor que añadir elementos al final de
 la lista (x1).
 
 En estos momentos , necesito trabajar con listas de números muy largas
 ( 10e6 elementos) para trocear en dos pedazos, invertir uno de ellos
 y volverlos a empalmar (método 2-opt). Una forma de expresarlo:
 
   L[i+1:j+1] = L[j:i:-1]   con i+1j
 
 que equivale a:
 
   L[:i] + L[j:i:-1] + L[j+1:]
 
 Esta última expresión, aunque más clara, es poco eficiente al tener
 que crear una nueva lista partiendo de tres sublistas intermedias.
 
 Los elementos no cambian de valor y tampoco cambia el tamaño de la
 lista. Parece que la lista es la estructura más eficiente para esta
 tarea (por lo que cuenta la documentación) siempre que no se modifique
 en tamaño. Pero me pregunto si hay algún modo de hacer este manejo más
 eficiente, tal vez usando alguna otra estructura, en python o numpy,
 que mejore estas tareas de corte y empalme. Intuyo que con arrays se
 reducen las necesidades de memoria, pero en estos momentos, la memoria
 es lo que menos me preocupa. Busco un método genérico que pueda valer
 para cualquier otro tipo de datos (eg: lista de vectores).
 
 
 
 
 [1]: http://docs.python.org/2/library/collections.html#collections.deque
 
 
 -- 
 Hyperreals *R  Quarks, bits y otras criaturas infinitesimales:
 http://ch3m4.org/blog
 Buscador Python Hispano: http://ch3m4.org/python-es
 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Stack Overflow en español: debate

2013-04-10 Por tema Hernán Foffani

 Yo podría montar algo parecido por mi cuenta, como ha hecho Joe di Castro con 
 Majibu, pero la cosa es que esto es una propuesta dentro de la red Stack 
 Exchange (Stack Overflow, Super User, Server Fault...). Ni yo ni nadie 
 necesita programar nada, pero requieren que para que una propuesta de sitio 
 nuevo se lance cuente primero con una masa crítica de usuarios que participen 
 activamente en la beta privada y «llenen» el sitio de contenido, para que 
 después pase a una fase de beta pública y, si despega, se adhiera 
 oficialmente a la red como sitio de pleno derecho:
 
 http://stackexchange.com/sites?view=grid
 
 Ya pasó la fase de definición, y ahora está en la recta final de la fase de 
 reunión de masa crítica. Necesita unos 15 usuarios más con más de 200 de 
 reputación en cualquier sitio de la red Stack Exchange para lanzar la beta 
 privada.


¡Hubieras empezado por ahí! Ja! (¿o me perdí algo?)

Haz una petición específica de voluntarios de la propuesta con el requerimiento 
indicado (los 200 puntos esos, que yo lo siento pero no llego) y cómo ponerse 
en contacto y listo.
No creo que tengas problemas para conseguir esos apoyos si haces el 
requerimiento en las diversas listas de lenguajes de programación en castellano 
tanto españolas como latinoamericanas.

Saludos y suerte!
-H.

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] El infinito se me queda corto

2013-03-25 Por tema Hernán Foffani
 Supongo que habrá una explicación. Si realizo el siguiente cálculo:
 
 In [13]: import math
 
 In [14]: math.tan(math.pi/2)
 Out[14]: 1.633123935319537e+16
 
 Aunque no esperaba que me diese la solución correcta de
 float(+inf)/float(-inf), me resulta muy corto para el tamaño
 máximo que podría tener un double:
 
 In [16]: sys.float_info.max
 Out[16]: 1.7976931348623157e+308
 
 He comprobado que pasa lo mismo con scala e, incluso, en el
 buscador de google (tal vez sea que google usa también python):
 
 https://www.google.com/search?q=tan(pi%2F2)
 
 ¿Existe alguna explicación?
 
 
 Supongo que a esta altura ya lo has resuelto, pero si no, añado algunas 
 precisiones (pun intended).
 
 Lo de Python/Scala/Google es por la libm, la biblioteca matemática estándar 
 de C. Esto muestra el mismo resultado que ves en Python (M_PI_2 es la 
 constante PI/2 ya definida en la biblioteca):
 
#include math.h
#include stdio.h
int main() { printf(%f\n, tan(M_PI_2)); }
 
 Matemáticamente hablando tan(pi/2) no está definido. El límite para valores 
 tendiendo a pi/2 desde 0 es +inf y -inf para x desde 3.
 Lo que mejor podría hacer tan() es devolver NaN pero debería saber que x es 
 exactamente PI y no un número menor/mayor. Si pruebas con valores 
 ligeramente mayores a M_PI_2 verás que tan() sí cambia el signo.
 
 La biblioteca resuelve bien algunas operaciones desde el punto de vista 
 matemático ( ej. 1/+inf ) y otras no (ej. pow(-1, +inf) - 1 y debería ser 
 NaN o domain error). Las libm están llenas de compromisos de ese estilo por 
 performance, implementación, precisión, etc. A esta altura su comportamiento 
 está completamente estandarizado.
 
 
 Me había quedado claro que es un tema de la librería matemática. Mi
 extrañeza venía por el bajo orden de magnitud del resultado, que queda
 explicado por la falta de precisión del número pi que emplea la
 librería matemática.
 
 Tal vez se aprecie mejor desde el lado contrario:
 
 In [1]: import sys, math
 In [2]: casi_infinito=sys.float_info.max
 In [3]: casi_infinito
 Out[3]: 1.7976931348623157e+308
 In [4]: math.atan(casi_infinito)*2==math.pi
 Out[4]: True
 In [5]: math.atan(1.7e+16)*2==math.pi
 Out[5]: True


Así es. El siguiente valor a PI/2 que se podría representar en flotantes es 
PI/2 + epsilon, pero ese ya se pasa y la tangente ya viene del -inf.
 import sys
 import math

 math.tan((math.pi/2)+sys.float_info.epsilon)
-6218431163823738.0


-H.
 



___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] usuarios de merengue

2011-12-07 Por tema Hernán Foffani
Gracias!

El 07/12/2011, a las 17:46, Luis Miguel Morillas escribió:

 El día 7 de diciembre de 2011 17:00, Hernán Foffani
 hfoff...@gmail.com escribió:
 Hola,
 Por algunos comentarios que he leído aquí me puse a jugar
 un poco con Merengue.
 ¿Hay alguna lista o grupo para usuarios de éste CMS?
 
 Hola, Hernan,
 
 Puedes usar merengue-develop...@googlegroups.com (en inglés)
 
 La presentación que hizo Manuel en el pyday  del mes pasado está en
 http://www.libresoftwareworldconference.com/programa/ponentes/merengue-el-nuevo-y-sorprendente-cms-basado-en-django.html
 
 
 Saludos,
 
 -- luismiguel
 
 
 
 
 Saludos,
 -H
 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/
 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Duda con operador de identidad

2010-07-17 Por tema Hernán Foffani

 Porqué pasa esto?
 
 a = 'UnaPalabra'
 b = 'UnaPalabra'
 a is b
 True
 a = 'Dos Palabras'
 b = 'Dos Palabras'
 a is b
 False
 
 Python hace caché de ciertos objetos (al menos Python 2.x, sucede así
 con los enteros cortos). No recuerdo si sucede lo mismo con ciertas
 cadenas, pero dado que son objetos inmutables, no me extrañaría.

Lo hace con las cadenas que pueden ser identificadores válidos.
En el segundo caso da Falso por el blanco.
 
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/