CVS: Products/Basket - VERSION.txt:1.1 README.txt:1.3 TODO.txt:1.2 __init__.py:1.18

Chris McDonough <[email protected]>
Newsgroups gmane.comp.web.zope.public-cvs
Message-ID <[email protected]>
Update of /cvs-repository/Products/Basket
In directory cvs.zope.org:/tmp/cvs-serv9534

Modified Files:
	README.txt TODO.txt __init__.py 
Added Files:
	VERSION.txt 
Log Message:
Add docs, create VERSION.txt, monkey-patch sys.modules['pkg_resources'] so Basket package authors don't need to import anything from Basket.



=== Added File Products/Basket/VERSION.txt ===
0.1


=== Products/Basket/README.txt 1.2 => 1.3 ===
--- Products/Basket/README.txt:1.2	Mon Nov  7 14:42:35 2005
+++ Products/Basket/README.txt	Wed Nov  9 19:00:40 2005
@@ -61,7 +61,7 @@
     detects a situation in which two distinct Product distributions
     contain a Product that has the same name (a case which is not
     caught by pkg_resources), Basket will prevent startup by raising
-    an exception.
+    an exception if Zope is in debug mode.
 
 How Do I Create Eggs that are Compatible with Basket?
 
@@ -93,7 +93,7 @@
   for legacy Zope API methods which expect to be able to use a Product
   name to access constructor functions.  Note that the behavior of
   Products packaged within Product distributions differs slightly from
-  that of "legacy" Products inasmuch as "egg Products" are not
+  that of "legacy" Products inasmuch as "egg Products" will not be
   imported at Zope startup time and will not show up in the
   ControlPanel list unless their packaging specifies a
   'zope2.initialize' entry point.
@@ -226,10 +226,50 @@
  'python setup.py bdist_egg'
 
  The ".egg" file created in dist is the Product distribution.  Refer
- to the setuptools documentation for advanced options.
+ to the "setuptools
+ documentation":http://peak.telecommunity.com/DevCenter/setuptools for
+ advanced options.
+
+Replacements for File-Bound Classes
+
+  The following Zope classes may not be sucessfully used within a
+  Product packaged as a 'zip-safe' egg::
+
+   Globals.DTMLFile
+   Globals.ImageFile
+   Products.PageTemplates.PageTemplateFile.PageTemplateFile
+
+  Instead, use these replacement classes (which have compatible constructors
+  and are monkey-patched into place by Basket)::
+
+   Globals.DTMLResource
+   Globals.ImageResource
+   Products.PageTemplates.PageTemplateResource
+
+  CMF's "Filesystem Directory View" and its supporting classes like
+  "FSFile", "FSPageTemplate", et. al may also not be used in Products
+  packaged as zipfiles.  Work to make the CMF filesystem skin
+  machinery understand zipfiles is underway in a SVN branch at the
+  time of this writing but is not yet released.
+
+  Custom code within your product that expects to be able to use
+  package resources as files on a filesystem (e.g. by using
+  "os.listdir", "open", "os.stat", etc.) against files in the product
+  package will fail.  Replace this code with the equivalent calls from
+  the "pkg_resources" module (which may be imported via "import
+  pkg_resources" when Basket is installed).  See the "pkg_resources
+  documentation":http://peak.telecommunity.com/DevCenter/setuptools
+  for more information.
 
 Forward Compatibility Notices
 
+  Basket ships with a Python 2.3-compatible version of setuptools'
+  pkg_resources module.  At Basket initialization time, this module is
+  inserted into sys.modules as "pkg_resources" (possibly shadowing
+  another pkg_resources module you've imported).  This is necessary
+  unless we want to require people to install setuptools before using
+  Basket.
+
   Note that the use of PRODUCT_DISTRIBUTIONS.txt may vanish in a later
   release of Basket in favor of a special section within the Zope 2
   main configuration file.
@@ -240,7 +280,8 @@
 
   The "Basket" product is a stopgap solution to the problem of being
   able to package Zope products as Python eggs.  Its functionality
-  will be foldeed into a later Zope release, at which point it will
-  cease to be useful and disappear.  Therefore, you should not depend
-  on importing or otherwise using the "Products.Basket" package or its
-  contents anywhere in your own Zope code.
+  will be folded into a later Zope release, at which point it will
+  cease to be useful and disappear (although eggs created which make
+  use of its facilities will continue to work).  Therefore, you should
+  not depend on importing or otherwise using the "Products.Basket"
+  package or its contents anywhere in your own Zope code.


=== Products/Basket/TODO.txt 1.1.1.1 => 1.2 ===
--- Products/Basket/TODO.txt:1.1.1.1	Mon Nov  7 13:47:23 2005
+++ Products/Basket/TODO.txt	Wed Nov  9 19:00:40 2005
@@ -1,17 +1,12 @@
-- Allow ImageResource, PageTemplateResource, and DTMLResource to
-  monkeypatch their counterparts in Zope.
+- For non-zip-safe Products, unpack the entire source tree into
+  a temporary location and put it on the path (removing the zipfile
+  from the path).
 
-- Do "jackboot" import prevention by putting a wrapper around Basket
-  in sys.modules (Basket is immediately deprecated; it is a stopgap
-  until we get support for egg distributions in the Zope core).
+- When an egg distribution is uninstalled, its persistent object
+  sticks around in the control panel.  It should go away.
 
-- Cause egg-distribution-packaged Products to show up in the Control
-  Panel -> Products area.
+- Hurt system files aren't registered or displayed.
 
-- Cause module-scope resources like "misc_", "methods", "__roles__",
-  and so on to be registered (see OFS.Application.install_product).
-
-- Passing Basket's "context" in to each subproducts' initialize
-  function is wrong; instead we need to create a ProductContext object
-  specially for the product (see OFS.Application.install_product).
+- Tracebacks from egg products don't include code from inside the egg.
+  Investigate this more (check if this is a known bug).
 


=== Products/Basket/__init__.py 1.17 => 1.18 ===
--- Products/Basket/__init__.py:1.17	Wed Nov  9 18:22:28 2005
+++ Products/Basket/__init__.py	Wed Nov  9 19:00:40 2005
@@ -4,6 +4,12 @@
 import traceback
 import textwrap
 
+# until it's part of Python, this needs to happen before Products.Basket.utils
+# is imported
+sys.modules['pkg_resources'] = pkg_resources
+sys.modules['Products.Basket.pkg_resources'] = pkg_resources
+sys.modules['Basket.pkg_resources'] = pkg_resources
+
 from Products.Basket.utils import EggProductContext
 from Products.Basket.utils import EggProduct
 import zLOG

_______________________________________________
Zope-CVS maillist  -  [email protected]
http://mail.zope.org/mailman/listinfo/zope-cvs

Zope CVS instructions: http://dev.zope.org/CVS
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.