Path: csiph.com!usenet.pasdenom.info!nntpfeed.proxad.net!proxad.net!feeder1-1.proxad.net!ecngs!feeder2.ecngs.de!217.188.199.168.MISMATCH!takemy.news.telefonica.de!telefonica.de!newsfeed.xs4all.nl!newsfeed7.news.xs4all.nl!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-announce@python.org Delivered-To: python-announce-list@mail.python.org X-Spam-Status: OK 0.003 X-Spam-Evidence: '*H*': 0.99; '*S*': 0.00; 'versions,': 0.05; 'deprecated': 0.07; 'distributing': 0.07; 'feature.': 0.07; 'pypi': 0.07; 'setup.py': 0.07; 'subject:ANN': 0.07; 'subject:released': 0.07; 'api': 0.09; 'anymore.': 0.09; 'experimental': 0.09; 'url:github': 0.09; 'url:rst': 0.09; 'python': 0.10; '3.0,': 0.16; '3.2,': 0.16; '3.3,': 0.16; 'received:eu': 0.16; 'sake,': 0.16; 'setuptools': 0.16; 'url:documentation': 0.16; 'documented': 0.18; 'frameworks': 0.18; 'skip:` 10': 0.18; 'skip:` 20': 0.18; 'tests.': 0.18; '4.0': 0.22; 'decorator': 0.22; 'dropped': 0.22; 'consistent': 0.23; 'examples': 0.24; 'module': 0.25; 'install': 0.25; 'header:User- Agent:1': 0.26; 'compatible': 0.27; 'packaging': 0.27; 'function': 0.28; 'preserve': 0.29; 'unified': 0.29; 'too.': 0.30; 'code': 0.30; 'option': 0.31; 'run': 0.33; 'source': 0.33; 'decorators': 0.33; 'utility': 0.33; '(for': 0.34; 'except': 0.34; 'that,': 0.34; 'received:google.com': 0.35; 'done': 0.35; 'functions.': 0.35; 'generic': 0.35; 'stable': 0.35; 'but': 0.36; 'there': 0.36; 'received:209.85': 0.36; 'subject:: ': 0.37; 'signature': 0.37; 'release': 0.37; 'doing': 0.38; 'integration': 0.38; 'manual': 0.38; 'version': 0.38; 'received:209': 0.38; 'received:209.85.216': 0.38; 'several': 0.38; 'skip:- 20': 0.39; 'format': 0.39; 'subject:-': 0.39; 'still': 0.40; 'ten': 0.60; 'your': 0.60; 'improved': 0.63; 'url:0': 0.63; 'past,': 0.66; 'user,': 0.67; 'to:addr:comp-lang-python-announce': 0.68; 'apart': 0.70; 'url:4': 0.70; 'to:addr:moderators.isc.org': 0.77; 'old,': 0.83; 'improved.': 0.84; 'message-id:@googlegroups.com': 0.84; 'michele': 0.84; 'occasion': 0.84; 'pip': 0.84; 'wheel': 0.84; 'releases.': 0.91 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=path:newsgroups:date:complaints-to:injection-info:nntp-posting-host :user-agent:mime-version:message-id:subject:from:injection-date:to :content-type; bh=BCuZS6AbW7t6dKCnRrdLWp6KtDfZRHR642Uk9QBmxYk=; b=ktrSPHmGMxFios4kCuTH8Hvut++6buPkHs2eMxw/z4oa6UL8qHrkjLouzl6C9E4fbW 0Xzfm4N1HW+BfmzwGJQ/kmbZBZjOMuY8fSKnwG5+nG/iNTTUe6H38M3/2EBkANprtrH1 6m7xSwu4h9SOzTEI7O96Lqb5scArmrfNKC0ew+J2mKAVVqY00kn/g/cTpNkDDoiIiyQq s9QOcUoTgiwFPSryXoQmRSUuVRYe7OEZu9LjkraFADJBPcBviTHpYJxzYIaK+U9niP/v +nd4gHTibV+fs7d1boy5/2KkRX4nm09KAcGGsvGBTCkzmHRNiZSX6SuhQSSUuCLzo3EF xlyg== X-Received: by 10.129.75.13 with SMTP id y13mr13323056ywa.29.1437733090452; Fri, 24 Jul 2015 03:18:10 -0700 (PDT) X-Received: by 10.140.109.132 with SMTP id l4mr268889qgf.15.1437733090416; Fri, 24 Jul 2015 03:18:10 -0700 (PDT) Newsgroups: comp.lang.python.announce Date: Fri, 24 Jul 2015 03:18:10 -0700 (PDT) Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=109.239.241.238; posting-account=gxxH8QkAAABVKeYyAqGOGoaFtdDdsshI User-Agent: G2/1.0 MIME-Version: 1.0 Subject: ANN: decorator-4.0.0 released From: Michele Simionato Injection-Date: Fri, 24 Jul 2015 10:18:10 +0000 To: comp-lang-python-announce@moderators.isc.org Content-Type: text/plain; charset=ISO-8859-1 X-Mailman-Approved-At: Fri, 24 Jul 2015 12:22:36 +0200 X-BeenThere: python-announce-list@python.org X-Mailman-Version: 2.1.20+ Precedence: list List-Id: Announcement-only list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Approved: python-announce-list@python.org Message-ID: Lines: 43 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1437733356 news.xs4all.nl 2933 [2001:888:2000:d::a6]:37824 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python.announce:1794 The decorator module is over ten years old, but still alive and kicking. It is used by several frameworks and has been stable for a long time. It is your best option if you want to preserve the signature of decorated functions in a consistent way across Python releases. Version 4.0 is fully compatible with the past, except for one thing: support for Python 2.4 and 2.5 has been dropped and now there is an unified code base for Python 2.6, 2.7, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5. You can download the new release from PyPI with the usual $ pip install decorator The source code and the documentation are on GitHub: https://github.com/micheles/decorator/blob/4.0.0/documentation.rst (for Python 2.X) https://github.com/micheles/decorator/blob/4.0.0/documentation3.rst (for Python 3.X) What's new --------------------- Since now there is a single manual for all Python versions, I took the occasion for overhauling the documentation. Therefore, even if you are an old time user, you may want to read the docs again, since several examples have been improved. The packaging has been improved and I am distributing the code in wheel format too. The integration with setuptools has been improved and now you can use ``python setup.py test`` to run the tests. A new utility function ``decorate(func, caller)`` has been added, doing the same job that in the past was done by ``decorator(caller, func)``. The old functionality is still there for compatibility sake, but it is deprecated and not documented anymore. Apart from that, there is a new experimental feature. The decorator module now includes an implementation of generic (multiple dispatch) functions. The API is designed to mimic the one of ``functools.singledispatch`` (introduced in Python 3.4) but the implementation is much simpler; moreover all the decorators involved preserve the signature of the decorated functions. Enjoy! Michele Simionato