[pyar] reusando decoradores parametrizados
Claudio Freire
klaussfreire en gmail.com
Mar Oct 1 00:59:40 ART 2013
Creo que esto debería funcionar
def compose(*decors):
def composed(f):
for decor in reversed(decors):
f = decor(f)
return f
return composed
my_magic = compose(
magic_arguments.magic_arguments()
magic_arguments.argument(
"-v", "--verbosity", action="count", default=0,
help="increase output verbosity"
)
magic_arguments.argument(
'--fcompiler',
choices=allowed_fcompilers,
help="""Specify Fortran compiler type by vendor.
See %%f2py_help --fcompiler""",
)
magic_arguments.argument(
'--compiler',
choices=allowed_compilers,
help="""Specify C compiler type (as defined by distutils).
See %%f2py_help --compiler"""
)
magic_arguments.argument(
'--f90flags', help="Specify F90 compiler flags"
)
magic_arguments.argument(
'--f77flags', help="Specify F77 compiler flags"
)
magic_arguments.argument(
'--opt', help="Specify optimization flags"
)
magic_arguments.argument(
'--arch', help="Specify architecture specific optimization flags"
)
magic_arguments.argument(
'--noopt', action="store_true", help="Compile without optimization"
)
magic_arguments.argument(
'--noarch', action="store_true", help="Compile without
arch-dependent optimization"
)
magic_arguments.argument(
'--debug', action="store_true", help="Compile with debugging
information"
)
magic_arguments.argument(
'--link', action='append', default=[],
help="""Link extension module with LINK resource, as defined
by numpy.distutils/system_info.py. E.g. to link
with optimized LAPACK libraries (vecLib on MacOSX,
ATLAS elsewhere), use --link lapack_opt.
See also %%f2py_help --resources switch."""
)
)
@my_magic
@line_magic
def blah(bleh):
return "blih"
2013/10/1 Martín Gaitán <gaitan en gmail.com>:
> Hola a tod en s.
>
> Tengo un método de una clase que usa mucho decoradores, algunos de ellos con
> parámetros.
>
> https://github.com/mgaitan/fortran_magic/blob/2bacf52accb0bd64541d9e882b78596a3d981a4a/fortranmagic.py#L93
>
> resulta que necesito hacer otro método de la misma clase que debe tener
> exáctamente los mismos decoradores (excepto, quizas, el último @cell_magic).
>
> ¿Cómo puedo convertir todo el set de decoradores parametrizados en un sólo
> decorador "my_arguments" que pueda usar en ambos metodos? Es decir, que se
> pueda usar asi:
>
> @my_arguments
> @cell_magic
> def fortran(self, line, cell):
> ...
>
> @my_arguments
> @line_magic
> def the_new_method(self, line, cell):
> ...
>
>
> chas gracias.
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
More information about the pyar
mailing list