Path: csiph.com!optima2.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!1.eu.feeder.erje.net!newsfeed.xs4all.nl!newsfeed7.news.xs4all.nl!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-announce-list@python.org Delivered-To: python-announce-list@mail.python.org X-Spam-Status: OK 0.008 X-Spam-Evidence: '*H*': 0.98; '*S*': 0.00; 'url:pypi': 0.03; 'subject:ANN': 0.07; 'subject:released': 0.07; 'url:github': 0.09; 'enjoy,': 0.16; 'from:addr:pobox.com': 0.16; 'lazily': 0.16; "package's": 0.16; 'received:208.72.237.35': 0.16; 'received:sasl.smtp.pobox.com': 0.16; 'received:smtp.pobox.com': 0.16; 'attribute': 0.18; 'subject:] ': 0.19; 'all,': 0.20; 'constant': 0.22; 'received:pobox.com': 0.22; 'module': 0.25; 'used,': 0.27; 'message-id:@mail.gmail.com': 0.27; "skip:' 10": 0.28; 'received:208.72': 0.29; 'received:208.72.237': 0.29; 'allows': 0.30; "i'm": 0.30; 'announce': 0.32; 'url:python': 0.33; 'safely': 0.33; 'received:google.com': 0.35; 'url:org': 0.36; 'received:209.85': 0.36; 'loaded': 0.36; 'release': 0.37; 'received:209': 0.38; 'subject:[': 0.39; 'easily': 0.39; 'to:addr:python.org': 0.40; 'your': 0.60; 'share': 0.61; 'pleased': 0.64; 'issued': 0.66; 'smith': 0.76; 'accessed.': 0.84 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=mime-version :date:message-id:subject:from:to:content-type; s=sasl; bh=U853Ax gqiMCq0laLjQypR8/D+DE=; b=n70fMydHyY9Kds2V5QyAdLr42Gi4wgeNN6M5sg BqGQnfADdO9agoXqmJ7vl5LiODCNCvhsf/meTpe8o5chR3quEiz2w6sC9QxbolZs VN/S7K6fKExunZTho4zNHrK2Frp5GLqdeyIux/1+UlDlReJNQMp3+eCFbALdXDiI S/J8A= DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=mime-version :date:message-id:subject:from:to:content-type; q=dns; s=sasl; b= kiEe1rsQZUuE3Bk7Uh/xp1IjMGTpARvXbx4v7q3kFe5xlhIORTi+Yiu13yT37UgM /P8CiGfSDQe9hqcajtnV24qgHWHGwcuFkU6gUoJuQbDjTbOM7r2z7UxZ3Io5+4oE jMmXjiV0q4GVD3ZHRJk4pZQ8kim1tvbozxDCRBmWplc= X-Gm-Message-State: ALoCoQmRX+iQSjafKA2JwmZ0ZwO9z/XnpZRblXunoUiRqc9hZvC6rE4YbsAr+9YeApmF8ZO+iApQ MIME-Version: 1.0 X-Received: by 10.170.86.132 with SMTP id d126mr1010543yka.57.1437550030921; Wed, 22 Jul 2015 00:27:10 -0700 (PDT) Date: Wed, 22 Jul 2015 00:27:10 -0700 Subject: [ANN] metamodule v1.0 released From: Nathaniel Smith To: python-announce-list@python.org Content-Type: text/plain; charset=UTF-8 X-Pobox-Relay-ID: 1122B6B6-3043-11E5-9FC1-561A9F42C9D4-09433513!pb-smtp1.pobox.com X-Mailman-Approved-At: Wed, 22 Jul 2015 14:17:49 +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 Newsgroups: comp.lang.python.announce Message-ID: Lines: 18 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1437567471 news.xs4all.nl 2917 [2001:888:2000:d::a6]:36080 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python.announce:1792 Hi all, I'm pleased to announce the first release of 'metamodule', a new package that allows you to safely and easily hook attribute access on your package's module object (among other things). So for example, you can easily set it up so that a submodule in your package is lazily loaded the first time it is used, or so that a DeprecationWarning is issued every time a global constant is accessed. Downloads: https://pypi.python.org/pypi/metamodule Source/issues: https://github.com/njsmith/metamodule Share and enjoy, -n -- Nathaniel J. Smith -- http://vorpus.org