Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #111719

Re: Technique for safely reloading dynamically generated module

Path csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail
From Malcolm Greene <python@bdurham.com>
Newsgroups comp.lang.python
Subject Re: Technique for safely reloading dynamically generated module
Date Thu, 21 Jul 2016 12:07:45 -0400
Lines 19
Message-ID <mailman.29.1469117273.22221.python-list@python.org> (permalink)
References <1469112141.379402.672830825.05659985@webmail.messagingengine.com> <nmqqd2$lcd$1@ger.gmane.org> <1469117265.403838.672932729.2B34F311@webmail.messagingengine.com>
Mime-Version 1.0
Content-Type text/plain
Content-Transfer-Encoding 7bit
X-Trace news.uni-berlin.de vqAzwQzTXLnqXgRKy/liOw3QGn+LtsTaXFb5DeZfqw0Q==
Return-Path <python@bdurham.com>
X-Original-To python-list@python.org
Delivered-To python-list@mail.python.org
X-Spam-Status OK 0.000
X-Spam-Evidence '*H*': 1.00; '*S*': 0.00; 'classes,': 0.05; 'context': 0.05; 'definitions': 0.07; 'namespace': 0.09; 'received:internal': 0.09; 'statements': 0.09; 'subject:module': 0.09; 'python': 0.10; 'assume': 0.11; 'downside': 0.16; 'from:addr:python': 0.16; 'malcolm': 0.16; 'message- id:@webmail.messagingengine.com': 0.16; 'module?': 0.16; 'received:10.202': 0.16; 'received:10.202.2': 0.16; 'received:66.111': 0.16; 'received:66.111.4': 0.16; 'received:io': 0.16; 'received:messagingengine.com': 0.16; 'received:psf.io': 0.16; 'exec': 0.22; 'defined': 0.23; 'references': 0.23; 'header :In-Reply-To:1': 0.24; 'chris': 0.26; 'yield': 0.27; 'function': 0.28; 'referencing': 0.29; 'classes': 0.30; "we're": 0.30; 'code': 0.30; 'source': 0.33; 'file': 0.34; 'gets': 0.35; 'there': 0.36; 'to:addr:python-list': 0.36; 'subject:: ': 0.37; 'received:10': 0.37; 'received:66': 0.38; 'thank': 0.38; 'well.': 0.40; 'to:addr:python.org': 0.40; 'some': 0.40; 'header:Message-Id:1': 0.61; 'within': 0.64; 'disappears': 0.84
DKIM-Signature v=1; a=rsa-sha1; c=relaxed/relaxed; d=bdurham.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-sasl-enc :x-sasl-enc; s=mesmtp; bh=OuvZxnW+cEQ5LJfBPqthQR5PdcE=; b=m7Cuei 8klKdcLuDNLWbEjiay+IVQVQzKIoCULE/cqOP8bequYXv9ZHOFEXzXDeSu0084hc s+6Ds0BUyGLHXORU0w6Gw1F6Si3HgTGUDcGNt/4I/Nl3gQQg/6c1fqNle8eziAMq v4m82om+0BK+KaFlzDI/f3KSZ2JZupP+dRzYM=
DKIM-Signature v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-sasl-enc:x-sasl-enc; s=smtpout; bh=OuvZxnW+cEQ5LJf BPqthQR5PdcE=; b=bhsI3nrS5aGzSOVW2NBrpws9Hd/T+s7+vwmxC8D8KBwahQw vWWMaXSpLBllWcVu2wcSsVL5/ObYNO7n0i7JVaVj4W6FRAdDBrYsjbG75RwVHvIZ NglF9c28Bvw51tPeJOq4DwElS1Ipil4aIK3qlbCIHTilesPB9cRCZJXRO+KQ=
X-Sasl-Enc JEF4XXrn71tpojm4Bc0N0uxQlEXHl10uApNr/EUX7rpi 1469117265
X-Mailer MessagingEngine.com Webmail Interface - ajax-2ccfea0a
In-Reply-To <nmqqd2$lcd$1@ger.gmane.org>
X-BeenThere python-list@python.org
X-Mailman-Version 2.1.22
Precedence list
List-Id General discussion list for the Python programming language <python-list.python.org>
List-Unsubscribe <https://mail.python.org/mailman/options/python-list>, <mailto:python-list-request@python.org?subject=unsubscribe>
List-Archive <http://mail.python.org/pipermail/python-list/>
List-Post <mailto:python-list@python.org>
List-Help <mailto:python-list-request@python.org?subject=help>
List-Subscribe <https://mail.python.org/mailman/listinfo/python-list>, <mailto:python-list-request@python.org?subject=subscribe>
X-Mailman-Original-Message-ID <1469117265.403838.672932729.2B34F311@webmail.messagingengine.com>
X-Mailman-Original-References <1469112141.379402.672830825.05659985@webmail.messagingengine.com> <nmqqd2$lcd$1@ger.gmane.org>
Xref csiph.com comp.lang.python:111719

Show key headers only | View raw


Thank you Chris and Peter.

The source file we're generating has one main function (go) with some
supporting functions and classes as well. Will there be any problems
referencing additional functions or classes defined in the source that
gets passed to exec ... as long as references to those functions and
classes happen within the generated module? 

I assume that one downside to the exec() approach is that there is no
persistent namespace for this code's functions and classes, eg. after
the exec() completes, its namespace disappears and is not available to
code that follows?

The Python documentation also warns: "Be aware that the return and yield
statements may not be used outside of function definitions even within
the context of code passed to the exec() function. The return value is
None."

Malcolm

Back to comp.lang.python | Previous | Next | Find similar | Unroll thread


Thread

Re: Technique for safely reloading dynamically generated module Malcolm Greene <python@bdurham.com> - 2016-07-21 12:07 -0400

csiph-web