[Checkins] SVN: zc.reloadmonitor/branches/dev/ initial

Jim Fulton jim at zope.com
Fri Sep 3 10:54:48 EDT 2010


Log message for revision 116179:
  initial

Changed:
  U   zc.reloadmonitor/branches/dev/README.txt
  U   zc.reloadmonitor/branches/dev/buildout.cfg
  U   zc.reloadmonitor/branches/dev/setup.py
  A   zc.reloadmonitor/branches/dev/src/zc/reloadmonitor/
  A   zc.reloadmonitor/branches/dev/src/zc/reloadmonitor/__init__.py
  A   zc.reloadmonitor/branches/dev/src/zc/reloadmonitor/configure.zcml
  A   zc.reloadmonitor/branches/dev/src/zc/reloadmonitor/tests.py

-=-
Modified: zc.reloadmonitor/branches/dev/README.txt
===================================================================
--- zc.reloadmonitor/branches/dev/README.txt	2010-09-03 14:53:02 UTC (rev 116178)
+++ zc.reloadmonitor/branches/dev/README.txt	2010-09-03 14:54:47 UTC (rev 116179)
@@ -1,14 +1,26 @@
-Title Here
-**********
+zc.reloadmonitor
+****************
 
+zc.reloadmonitor provides a plug-in for zc.monitor. It allows you to
+cause already imported modules to be reloaded.
 
-To learn more, see
+To use, just connect to the monitor port and give the command::
 
+  reload my.module
 
+To configure/enable from Python, use::
+
+  import zc.reloadmodule
+  zc.reloadmonitor.configure()
+
+To configure from ZCML, use::
+
+  <include package="zc.reloadmonitor" />
+
 Changes
 *******
 
-0.1 (yyyy-mm-dd)
+0.1 (2010-09-03)
 ================
 
 Initial release

Modified: zc.reloadmonitor/branches/dev/buildout.cfg
===================================================================
--- zc.reloadmonitor/branches/dev/buildout.cfg	2010-09-03 14:53:02 UTC (rev 116178)
+++ zc.reloadmonitor/branches/dev/buildout.cfg	2010-09-03 14:54:47 UTC (rev 116179)
@@ -4,7 +4,7 @@
 
 [test]
 recipe = zc.recipe.testrunner
-eggs = 
+eggs = zc.reloadmonitor [test]
 
 [py]
 recipe = zc.recipe.egg

Modified: zc.reloadmonitor/branches/dev/setup.py
===================================================================
--- zc.reloadmonitor/branches/dev/setup.py	2010-09-03 14:53:02 UTC (rev 116178)
+++ zc.reloadmonitor/branches/dev/setup.py	2010-09-03 14:54:47 UTC (rev 116179)
@@ -11,10 +11,11 @@
 # FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
-name, version = 'zc.', '0'
+name, version = 'zc.reloadmonitor', '0'
 
-install_requires = ['setuptools']
-extras_require = dict(test=['zope.testing'])
+install_requires = ['setuptools', 'zope.component', 'zc.monitor',
+                    'zope.configuration']
+extras_require = dict(test=['zope.testing', 'zc.ngi'])
 
 entry_points = """
 """

Added: zc.reloadmonitor/branches/dev/src/zc/reloadmonitor/__init__.py
===================================================================
--- zc.reloadmonitor/branches/dev/src/zc/reloadmonitor/__init__.py	                        (rev 0)
+++ zc.reloadmonitor/branches/dev/src/zc/reloadmonitor/__init__.py	2010-09-03 14:54:47 UTC (rev 116179)
@@ -0,0 +1,33 @@
+##############################################################################
+#
+# Copyright (c) 2010 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+
+import sys
+import zope.component
+import zope.interface
+import zc.monitor.interfaces
+
+ at zope.interface.provider(zc.monitor.interfaces.IMonitorPlugin)
+def reloadmonitor(connection, name):
+    """reload an already-imported module
+
+    Usage: reload module.name
+
+    Note that the usual Python reload semantics apply.  For example,
+    long-lived instances of classes defined in the module are unaffected.
+    """
+    reload(sys.modules[name])
+    print >>connection, 'done'
+
+def configure(name='reload'):
+    zope.component.provideUtility(reloadmonitor, name=name)


Property changes on: zc.reloadmonitor/branches/dev/src/zc/reloadmonitor/__init__.py
___________________________________________________________________
Added: svn:keywords
   + Id
Added: svn:eol-style
   + native

Added: zc.reloadmonitor/branches/dev/src/zc/reloadmonitor/configure.zcml
===================================================================
--- zc.reloadmonitor/branches/dev/src/zc/reloadmonitor/configure.zcml	                        (rev 0)
+++ zc.reloadmonitor/branches/dev/src/zc/reloadmonitor/configure.zcml	2010-09-03 14:54:47 UTC (rev 116179)
@@ -0,0 +1,4 @@
+<configure xmlns="http://namespaces.zope.org/zope">
+    <include package="zope.component" file="meta.zcml" />
+    <utility component=".reloadmonitor" name="reload" />
+</configure>


Property changes on: zc.reloadmonitor/branches/dev/src/zc/reloadmonitor/configure.zcml
___________________________________________________________________
Added: svn:eol-style
   + native

Added: zc.reloadmonitor/branches/dev/src/zc/reloadmonitor/tests.py
===================================================================
--- zc.reloadmonitor/branches/dev/src/zc/reloadmonitor/tests.py	                        (rev 0)
+++ zc.reloadmonitor/branches/dev/src/zc/reloadmonitor/tests.py	2010-09-03 14:54:47 UTC (rev 116179)
@@ -0,0 +1,93 @@
+
+##############################################################################
+#
+# Copyright (c) 2010 Zope Foundation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+from zope.testing import setupstack
+import doctest, os, unittest, StringIO, sys
+import zc.monitor, zc.ngi.testing, zc.reloadmonitor
+import zope.component.testing, zope.configuration.xmlconfig
+
+def basic():
+    r"""
+
+The reload plugin is very simple:
+
+    >>> conn = StringIO.StringIO()
+    >>> zc.reloadmonitor.reloadmonitor(conn, 'reloadmonitorexample')
+    Traceback (most recent call last):
+    ...
+    KeyError: 'reloadmonitorexample'
+
+    >>> conn.getvalue()
+    ''
+
+Here, the reload failed because reloadmonitorexample hadn't been imported.
+
+    >>> import reloadmonitorexample
+    importing reloadmonitorexample
+
+    >>> zc.reloadmonitor.reloadmonitor(conn, 'reloadmonitorexample')
+    importing reloadmonitorexample
+
+
+    >>> conn.getvalue()
+    'done\n'
+
+    """
+
+def pyintegration():
+    r"""
+    >>> zc.reloadmonitor.configure()
+    >>> import reloadmonitorexample
+    importing reloadmonitorexample
+
+    >>> conn = zc.ngi.testing.Connection()
+    >>> server = zc.monitor.Server(conn)
+    >>> conn.peer.write('reload reloadmonitorexample\n')
+    importing reloadmonitorexample
+    -> 'done'
+    -> '\n'
+    -> CLOSE
+    """
+
+def zcmkintegration():
+    r"""
+    >>> _ = zope.configuration.xmlconfig.string(
+    ...   '<include package="zc.reloadmonitor" />')
+
+    >>> import reloadmonitorexample
+    importing reloadmonitorexample
+
+    >>> conn = zc.ngi.testing.Connection()
+    >>> server = zc.monitor.Server(conn)
+    >>> conn.peer.write('reload reloadmonitorexample\n')
+    importing reloadmonitorexample
+    -> 'done'
+    -> '\n'
+    -> CLOSE
+    """
+
+def setUp(test):
+    setupstack.setUpDirectory(test)
+    here = os.getcwd()
+    sys.path.append(here)
+    open('reloadmonitorexample.py', 'w').write(
+        'print "importing reloadmonitorexample"\n')
+    setupstack.register(test, sys.path.remove, here)
+    sys.modules.pop('reloadmonitorexample', None)
+    setupstack.register(test, sys.modules.pop, 'reloadmonitorexample', None)
+    zope.component.testing.setUp()
+    setupstack.register(test, zope.component.testing.tearDown)
+
+def test_suite():
+    return doctest.DocTestSuite(setUp=setUp, tearDown=setupstack.tearDown)


Property changes on: zc.reloadmonitor/branches/dev/src/zc/reloadmonitor/tests.py
___________________________________________________________________
Added: svn:keywords
   + Id
Added: svn:eol-style
   + native



More information about the checkins mailing list