[Python-checkins] python/nondist/peps pep-0318.txt,1.7,1.8

goodger at users.sourceforge.net goodger at users.sourceforge.net
Tue Mar 30 08:39:24 EST 2004


Update of /cvsroot/python/python/nondist/peps
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27770

Modified Files:
	pep-0318.txt 
Log Message:
fixed list containment (indents) & whitespace

Index: pep-0318.txt
===================================================================
RCS file: /cvsroot/python/python/nondist/peps/pep-0318.txt,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** pep-0318.txt	30 Mar 2004 03:48:59 -0000	1.7
--- pep-0318.txt	30 Mar 2004 13:39:21 -0000	1.8
***************
*** 3,7 ****
  Version: $Revision$
  Last-Modified: $Date$
! Author: Kevin D. Smith <Kevin.Smith at theMorgue.org>, 
          Jim Jewett <jimjjewett at users.sourceforge.net>,
          Skip Montanaro <skip at pobox.com>
--- 3,7 ----
  Version: $Revision$
  Last-Modified: $Date$
! Author: Kevin D. Smith <Kevin.Smith at theMorgue.org>,
          Jim Jewett <jimjjewett at users.sourceforge.net>,
          Skip Montanaro <skip at pobox.com>
***************
*** 62,65 ****
--- 62,66 ----
  modifications to classes.
  
+ 
  Background
  ==========
***************
*** 74,86 ****
  ``comp.lang.python`` by `Gareth McCaughan`_.
  
! .. _syntactic support for decorators: http://www.python.org/doc/essays/ppt/python10/py10keynote.pdf
! .. _10th python conference: http://www.python.org/workshops/2002-02/
! .. _michael hudson raised the topic: http://mail.python.org/pipermail/python-dev/2002-February/020005.html
! .. _he later said: http://mail.python.org/pipermail/python-dev/2002-February/020017.html
! .. _gareth mccaughan: http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&selm=slrna40k88.2h9o.Gareth.McCaughan%40g.local
  
  Class decorations seem like an obvious next step because class
  definition and function definition are syntactically similar.
  
  Design Goals
  ============
--- 75,93 ----
  ``comp.lang.python`` by `Gareth McCaughan`_.
  
! .. _syntactic support for decorators:
!    http://www.python.org/doc/essays/ppt/python10/py10keynote.pdf
! .. _10th python conference:
!    http://www.python.org/workshops/2002-02/
! .. _michael hudson raised the topic:
!    http://mail.python.org/pipermail/python-dev/2002-February/020005.html
! .. _he later said:
!    http://mail.python.org/pipermail/python-dev/2002-February/020017.html
! .. _gareth mccaughan:
!    http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&selm=slrna40k88.2h9o.Gareth.McCaughan%40g.local
  
  Class decorations seem like an obvious next step because class
  definition and function definition are syntactically similar.
  
+ 
  Design Goals
  ============
***************
*** 110,114 ****
     there`_"
  
! .. _toy parser tools out there: http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&selm=mailman.1010809396.32158.python-list%40python.org
  
  Proposed Syntax
--- 117,123 ----
     there`_"
  
! .. _toy parser tools out there:
!    http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&selm=mailman.1010809396.32158.python-list%40python.org
! 
  
  Proposed Syntax
***************
*** 129,132 ****
--- 138,142 ----
          pass
  
+ 
  Alternate Proposals
  ===================
***************
*** 142,146 ****
  `alternatives to "as"`_ have been proposed. :-)
  
! .. _alternatives to "as": http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&threadm=mailman.236.1079968472.742.python-list%40python.org&rnum=2&prev=/groups%3Fq%3Dpython%2Bpep%2B318%26hl%3Den%26lr%3D%26ie%3DUTF-8%26oe%3DUTF-8%26selm%3Dmailman.236.1079968472.742.python-list%2540python.org%26rnum%3D2
  
  ::
--- 152,157 ----
  `alternatives to "as"`_ have been proposed. :-)
  
! .. _alternatives to "as":
!    http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&threadm=mailman.236.1079968472.742.python-list%40python.org&rnum=2&prev=/groups%3Fq%3Dpython%2Bpep%2B318%26hl%3Den%26lr%3D%26ie%3DUTF-8%26oe%3DUTF-8%26selm%3Dmailman.236.1079968472.742.python-list%2540python.org%26rnum%3D2
  
  ::
***************
*** 162,166 ****
  function name.
  
! .. _Python Template Language: http://www.mems-exchange.org/software/quixote/doc/PTL.html
  
  ::
--- 173,178 ----
  function name.
  
! .. _Python Template Language:
!    http://www.mems-exchange.org/software/quixote/doc/PTL.html
  
  ::
***************
*** 180,183 ****
--- 192,196 ----
  it would require the introduction of a new keyword.
  
+ 
  Current Implementation
  ======================
***************
*** 200,203 ****
--- 213,217 ----
  .. _patch: http://starship.python.net/crew/mwh/hacks/meth-syntax-sugar-3.diff
  
+ 
  Examples
  ========
***************
*** 212,224 ****
     isn't actually "wrapped" in the usual sense.
  
! ::
  
!     def onexit(f):
!         import atexit
!         atexit.register(f)
!         return f
  
!     def func() [onexit]:
!         ...
  
  2. Define a class with a singleton instance.  Note that once the class
--- 226,238 ----
     isn't actually "wrapped" in the usual sense.
  
!    ::
  
!        def onexit(f):
!            import atexit
!            atexit.register(f)
!            return f
  
!        def func() [onexit]:
!            ...
  
  2. Define a class with a singleton instance.  Note that once the class
***************
*** 226,281 ****
     to create more instances.  (From Shane Hathaway on ``python-dev``.)
  
! ::
  
!     def singleton(cls):
!         return cls()
  
!     class MyClass [singleton]:
!         ...
  
  3. Decorate a function with release information.  (Based on an example
     posted by Anders Munch on ``python-dev``.)
  
! ::
  
!     def release(**kwds):
!         def decorate(f):
!             for k in kwds:
!                 setattr(f, k, kwds[k])
!             return f
!         return decorate
  
!     def mymethod(f) [release(versionadded="2.2",
!                              author="Guido van Rossum")]:
!         ...
  
  4. Enforce function argument and return types.
  
! ::
  
!     def accepts(*types):
!         def check_accepts(f):
!             assert len(types) == f.func_code.co_argcount
!             def new_f(*args, **kwds):
!                 for (a, t) in zip(args, types):
!                     assert isinstance(a, t), \
!                            "arg %r does not match %s" % (a,t)
!                 return f(*args, **kwds)
!             return new_f
!         return check_accepts
  
!     def returns(rtype):
!         def check_returns(f):
!             def new_f(*args, **kwds):
!                 result = f(*args, **kwds)
!                 assert isinstance(result, rtype), \
!                        "return value %r does not match %s" % (result,rtype)
!                 return result
!             return new_f
!         return check_returns
  
!     def func(arg1, arg2) [accepts(int, (int,float)),
!                           returns((int,float))]:
!         return arg1 * arg2
  
  5. Declare that a class implements a particular (set of) interface(s).
--- 240,295 ----
     to create more instances.  (From Shane Hathaway on ``python-dev``.)
  
!    ::
  
!        def singleton(cls):
!            return cls()
  
!        class MyClass [singleton]:
!            ...
  
  3. Decorate a function with release information.  (Based on an example
     posted by Anders Munch on ``python-dev``.)
  
!    ::
  
!        def release(**kwds):
!            def decorate(f):
!                for k in kwds:
!                    setattr(f, k, kwds[k])
!                return f
!            return decorate
  
!        def mymethod(f) [release(versionadded="2.2",
!                                 author="Guido van Rossum")]:
!            ...
  
  4. Enforce function argument and return types.
  
!    ::
  
!        def accepts(*types):
!            def check_accepts(f):
!                assert len(types) == f.func_code.co_argcount
!                def new_f(*args, **kwds):
!                    for (a, t) in zip(args, types):
!                        assert isinstance(a, t), \
!                               "arg %r does not match %s" % (a,t)
!                    return f(*args, **kwds)
!                return new_f
!            return check_accepts
  
!        def returns(rtype):
!            def check_returns(f):
!                def new_f(*args, **kwds):
!                    result = f(*args, **kwds)
!                    assert isinstance(result, rtype), \
!                           "return value %r does not match %s" % (result,rtype)
!                    return result
!                return new_f
!            return check_returns
  
!        def func(arg1, arg2) [accepts(int, (int,float)),
!                              returns((int,float))]:
!            return arg1 * arg2
  
  5. Declare that a class implements a particular (set of) interface(s).
***************
*** 283,310 ****
     experience with `PyProtocols`_.
  
! .. _PyProtocols: http://peak.telecommunity.com/PyProtocols.html
  
! ::
  
!     def provides(*interfaces):
!          """
!          An actual, working, implementation of provides for
!          the current implementation of PyProtocols.  Not
!          particularly important for the PEP text.
!          """
!          def provides(typ):
!              declareImplementation(typ, instancesProvide=interfaces)
!              return typ
!          return provides
  
!     class IBar(Interface):
!          """Declare something about IBar here"""
  
!     class Foo(object) [provides(IBar)]:
!             """Implement something here..."""
  
  Of course, all these examples are possible today, though without the
  syntactic support.
  
  Open Issues
  ===========
--- 297,325 ----
     experience with `PyProtocols`_.
  
!    .. _PyProtocols: http://peak.telecommunity.com/PyProtocols.html
  
!    ::
  
!        def provides(*interfaces):
!             """
!             An actual, working, implementation of provides for
!             the current implementation of PyProtocols.  Not
!             particularly important for the PEP text.
!             """
!             def provides(typ):
!                 declareImplementation(typ, instancesProvide=interfaces)
!                 return typ
!             return provides
  
!        class IBar(Interface):
!             """Declare something about IBar here"""
  
!        class Foo(object) [provides(IBar)]:
!                """Implement something here..."""
  
  Of course, all these examples are possible today, though without the
  syntactic support.
  
+ 
  Open Issues
  ===========
***************
*** 316,320 ****
     ``python-dev``.
  
! .. _strong arguments: http://mail.python.org/pipermail/python-dev/2004-March/thread.html
  
  
--- 331,336 ----
     ``python-dev``.
  
!    .. _strong arguments:
!       http://mail.python.org/pipermail/python-dev/2004-March/thread.html
  
  




More information about the Python-checkins mailing list