chemistry-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jpo...@apache.org
Subject svn commit: r1080057 [1/5] - in /chemistry/site/trunk/content/python/docs: ./ _sources/ _static/
Date Wed, 09 Mar 2011 23:29:43 GMT
Author: jpotts
Date: Wed Mar  9 23:29:42 2011
New Revision: 1080057

URL: http://svn.apache.org/viewvc?rev=1080057&view=rev
Log:
Uploading cmislib 0.4.1 docs

Added:
    chemistry/site/trunk/content/python/docs/
    chemistry/site/trunk/content/python/docs/_sources/
    chemistry/site/trunk/content/python/docs/_sources/about.txt
    chemistry/site/trunk/content/python/docs/_sources/code.txt
    chemistry/site/trunk/content/python/docs/_sources/devguide.txt
    chemistry/site/trunk/content/python/docs/_sources/docs.txt
    chemistry/site/trunk/content/python/docs/_sources/examples.txt
    chemistry/site/trunk/content/python/docs/_sources/index.txt
    chemistry/site/trunk/content/python/docs/_sources/install.txt
    chemistry/site/trunk/content/python/docs/_sources/sample-data.txt
    chemistry/site/trunk/content/python/docs/_sources/tests.txt
    chemistry/site/trunk/content/python/docs/_static/
    chemistry/site/trunk/content/python/docs/_static/basic.css
    chemistry/site/trunk/content/python/docs/_static/default.css
    chemistry/site/trunk/content/python/docs/_static/doctools.js
    chemistry/site/trunk/content/python/docs/_static/file.png   (with props)
    chemistry/site/trunk/content/python/docs/_static/jquery.js
    chemistry/site/trunk/content/python/docs/_static/minus.png   (with props)
    chemistry/site/trunk/content/python/docs/_static/plus.png   (with props)
    chemistry/site/trunk/content/python/docs/_static/pygments.css
    chemistry/site/trunk/content/python/docs/_static/searchtools.js
    chemistry/site/trunk/content/python/docs/about.html
    chemistry/site/trunk/content/python/docs/code.html
    chemistry/site/trunk/content/python/docs/devguide.html
    chemistry/site/trunk/content/python/docs/docs.html
    chemistry/site/trunk/content/python/docs/examples.html
    chemistry/site/trunk/content/python/docs/genindex.html
    chemistry/site/trunk/content/python/docs/index.html
    chemistry/site/trunk/content/python/docs/install.html
    chemistry/site/trunk/content/python/docs/modindex.html
    chemistry/site/trunk/content/python/docs/objects.inv
    chemistry/site/trunk/content/python/docs/sample-data.html
    chemistry/site/trunk/content/python/docs/search.html
    chemistry/site/trunk/content/python/docs/searchindex.js
    chemistry/site/trunk/content/python/docs/tests.html

Added: chemistry/site/trunk/content/python/docs/_sources/about.txt
URL: http://svn.apache.org/viewvc/chemistry/site/trunk/content/python/docs/_sources/about.txt?rev=1080057&view=auto
==============================================================================
--- chemistry/site/trunk/content/python/docs/_sources/about.txt (added)
+++ chemistry/site/trunk/content/python/docs/_sources/about.txt Wed Mar  9 23:29:42 2011
@@ -0,0 +1,66 @@
+..
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+
+About the CMIS Python Library
+=============================
+The goal of this project is to create a CMIS client for Python that can be used to work with
any CMIS-compliant repository.
+
+The library is being developed with the following guidelines:
+ * Developers using this API should be able to work with CMIS domain objects without having
to worry about the underlying implementation details.
+ * The library will use the Resftul AtomPub Binding.
+ * The library will conform to the `CMIS spec <http://docs.oasisopen.org/cmis/CMIS/v1.0/cd06/cmis-spec-v1.0.pdf>`_
as closely as possible. Several public CMIS repositories are being used to test the API. 
+ * The library should have no hard-coded URL's. It should be able to get everything it needs
regarding how to work with the CMIS service from the CMIS service URL response and subsequent
calls.
+ * There shouldn't have to be a vendor-specific version of this library. The goal is for
it to be interoperable with CMIS-compliant providers.
+
+Quick Example
+-------------
+This should give you an idea of how easy and natural it is to work with the API:
+  >>> cmisClient = cmislib.CmisClient('http://localhost:8080/alfresco/s/cmis', 'admin',
'admin')
+  >>> repo = cmisClient.defaultRepository
+  >>> rootFolder = repo.rootFolder
+  >>> children = rootFolder.getChildren()
+  >>> newFolder = rootFolder.createFolder('testDeleteFolder folder')
+  >>> props = newFolder.properties
+  >>> newFolder.delete()
+
+To-Do's
+-------
+Miscellaneous
+ * createDocumentFromSource
+ * getProperties filter
+ * getContentStream stream id
+ * Document.move (WIP)
+
+Renditions
+ * getRenditions
+
+Change history
+ * change token
+
+Unfiling/multifiling support
+ * addObject (WIP)
+ * removeObject (WIP)
+ * createDocument without a parent folder (unfiled) (WIP)
+ * getObjectParents (WIP)
+
+Policies
+ * Policy object
+ * createPolicy
+ * applyPolicy
+ * removePolicy
+ * getAppliedPolicies

Added: chemistry/site/trunk/content/python/docs/_sources/code.txt
URL: http://svn.apache.org/viewvc/chemistry/site/trunk/content/python/docs/_sources/code.txt?rev=1080057&view=auto
==============================================================================
--- chemistry/site/trunk/content/python/docs/_sources/code.txt (added)
+++ chemistry/site/trunk/content/python/docs/_sources/code.txt Wed Mar  9 23:29:42 2011
@@ -0,0 +1,56 @@
+..
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+
+Code
+====
+
+The :mod:`cmislib.model` Module
+-------------------------------
+
+The :mod:`cmislib.model` Module contains all the CMIS domain objects. The ones you will work
with are listed as top level package elements. When working with the repository, the first
thing you need to do is grab an instance of :class:`cmislib.CmisClient`, passing it the repository
endpoint URL, username, and password.
+
+>>> cmisClient = cmislib.CmisClient('http://localhost:8080/alfresco/s/cmis', 'admin',
'admin')
+
+From there you can get the default repository...
+
+>>> repo = cmisClient.defaultRepository
+
+or a specific repository if you know the repository ID.
+
+>>> repo = cmisClient.getRepository('83beb297-a6fa-4ac5-844b-98c871c0eea9')
+
+Once you have that, you're off to the races. Use the :class:`cmislib.Repository` class to
create new :class:`cmislib.Folder` and :class:`cmislib.Document` objects, perform searches,
etc.
+
+.. automodule:: cmislib.model
+   :members:
+
+The :mod:`cmislib.net` Module
+-----------------------------
+
+The :mod:`cmislib.net` Module contains the classes used by :mod:`cmislib.model.CmisClient`
to communicate with the CMIS repository. The most important of which is :class:`cmislib.net.RESTService`.
+
+.. automodule:: cmislib.net
+   :members: RESTService
+   
+The :mod:`tests.cmislib` Module
+-------------------------------
+
+The :mod:`tests.cmislibtest` Module contains unit tests for all classes and methods in :mod:`cmislib.model`.
See :ref:`tests` for more information on running tests.
+
+.. automodule:: tests.cmislibtest
+   :members:

Added: chemistry/site/trunk/content/python/docs/_sources/devguide.txt
URL: http://svn.apache.org/viewvc/chemistry/site/trunk/content/python/docs/_sources/devguide.txt?rev=1080057&view=auto
==============================================================================
--- chemistry/site/trunk/content/python/docs/_sources/devguide.txt (added)
+++ chemistry/site/trunk/content/python/docs/_sources/devguide.txt Wed Mar  9 23:29:42 2011
@@ -0,0 +1,63 @@
+..
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+
+===============
+Developer Guide
+===============
+
+This page is for people who wish to contribute code to this project.
+
+Developer Setup
+---------------
+Check out the source from head, switch to the source code's root directory, then run:
+  python setup.py develop
+  
+That will set up this project's src directory in the easy-install.pth file in site-packages.
+
+Release Process
+---------------
+
+Checklist:
+ #. All newly-added code has a unit test
+ #. All tests pass cleanly (or have good reasons for not passing)
+ #. Change setup.cfg to have the appropriate tag ('dev', for example, or '' for a stable
release)
+ #. Change setup.py to have the appropriate version number
+ #. All changes checked in
+ #. pep8 runs without much complaint
+     * pep8 --ignore=E501,W601 --repeat model.py
+
+ #. pylint runs without much complaint
+     * pylint --disable-msg=C0103,R0904,R0913,C0301,W0511 cmislibtest.py
+
+ #. Inline comments updated with changes
+ #. Sphinx doc updated with changes
+ #. Docs built cleanly
+     * cd src/doc/src/
+     * make html
+
+ #. Setuptools build
+     * python setup.py bdist sdist
+     * Use release script to sign files
+
+ #. Copy files to Apache, start vote
+ #. If vote passes, copy files to Apache dist
+ #. Upload files to Pypi
+ #. Tag the release in Subversion
+ #. Check the `cheesecake <http://pycheesecake.org/>`_ score
+     * python cheesecake_index --name=cmislib
+

Added: chemistry/site/trunk/content/python/docs/_sources/docs.txt
URL: http://svn.apache.org/viewvc/chemistry/site/trunk/content/python/docs/_sources/docs.txt?rev=1080057&view=auto
==============================================================================
--- chemistry/site/trunk/content/python/docs/_sources/docs.txt (added)
+++ chemistry/site/trunk/content/python/docs/_sources/docs.txt Wed Mar  9 23:29:42 2011
@@ -0,0 +1,37 @@
+..
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+
+Documentation
+=============
+
+This documentation was generated with `Sphinx <http://sphinx.pocoo.org/>`_. To install
Sphinx on Mac OS X using Macports:
+
+MAC OS X::
+
+    sudo port install py26-sphinx
+
+Once you've got Sphinx installed, if you need to regenerate the documentation::
+
+    cd /path/to/cmislib/src/doc/src
+    Run either:    
+    	sphinx-build -b html -d ../build/.doctrees . ../build
+	make html
+
+The generated HTML will be placed in doc/build::
+
+    firefox file:///path/to/cmislib/src/doc/build/index.html

Added: chemistry/site/trunk/content/python/docs/_sources/examples.txt
URL: http://svn.apache.org/viewvc/chemistry/site/trunk/content/python/docs/_sources/examples.txt?rev=1080057&view=auto
==============================================================================
--- chemistry/site/trunk/content/python/docs/_sources/examples.txt (added)
+++ chemistry/site/trunk/content/python/docs/_sources/examples.txt Wed Mar  9 23:29:42 2011
@@ -0,0 +1,137 @@
+..
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+
+.. _examples:
+
+========
+Examples
+========
+There's nothing in cmislib that is specific to any particular vendor. Once you give it your
CMIS provider's service URL and some credentials, it figures out where to go from there.
+
+Let's look at some examples using Alfresco's public CMIS repository.
+
+-----------------------
+Get a Repository object
+-----------------------
+
+ #. From the command-line, start the Python shell by typing `python` then hit enter.
+ #. Import the CmisClient:
+
+    >>> from cmislib import CmisClient
+
+ #. Point the CmisClient at the repository's service URL 
+
+    >>> client = CmisClient('http://cmis.alfresco.com/s/cmis', 'admin', 'admin')
+
+ #. Get the default repository for the service
+
+    >>> repo = client.defaultRepository
+    >>> repo.id
+    u'83beb297-a6fa-4ac5-844b-98c871c0eea9'
+
+ #. Get the repository's properties. This for-loop spits out everything cmislib knows about
the repo.
+
+    >>> repo.name
+    u'Main Repository'
+    >>> info = repo.info
+    >>> for k,v in info.items():
+        ...     print "%s:%s" % (k,v)
+        ...
+        cmisSpecificationTitle:Version 1.0 Committee Draft 04
+        cmisVersionSupported:1.0
+        repositoryDescription:None
+        productVersion:3.2.0 (r2 2440)
+        rootFolderId:workspace://SpacesStore/aa1ecedf-9551-49c5-831a-0502bb43f348
+        repositoryId:83beb297-a6fa-4ac5-844b-98c871c0eea9
+        repositoryName:Main Repository
+        vendorName:Alfresco
+        productName:Alfresco Repository (Community)
+
+-------------------
+Folders & Documents
+-------------------
+
+Once you've got the Repository object you can start working with folders.
+
+ #. Create a new folder in the root. You should name yours something unique.
+
+    >>> root = repo.rootFolder
+    >>> someFolder = root.createFolder('someFolder')
+    >>> someFolder.id
+    u'workspace://SpacesStore/91f344ef-84e7-43d8-b379-959c0be7e8fc'
+
+ #. Then, you can create some content:
+
+    >>> someFile = open('test.txt', 'r')
+    >>> someDoc = someFolder.createDocument('Test Document', contentFile=someFile)
+
+ #. And, if you want, you can dump the properties of the newly-created document (this is
a partial list):
+
+    >>> props = someDoc.properties
+    >>> for k,v in props.items():
+    ...     print '%s:%s' % (k,v)
+    ...
+    cmis:contentStreamMimeType:text/plain
+    cmis:creationDate:2009-12-18T10:59:26.667-06:00
+    cmis:baseTypeId:cmis:document
+    cmis:isLatestMajorVersion:false
+    cmis:isImmutable:false
+    cmis:isMajorVersion:false
+    cmis:objectId:workspace://SpacesStore/2cf36ad5-92b0-4731-94a4-9f3fef25b479
+
+----------------------------------
+Searching For & Retrieving Objects
+----------------------------------
+
+There are several different ways to grab an object:
+ * You can run a CMIS query
+ * You can ask the repository to give you one for a specific path or object ID
+ * You can traverse the repository using a folder's children and/or descendants
+ 
+ #. Let's find the doc we just created with a full-text search.
+  
+    .. note::
+       Note that I'm currently seeing a problem with Alfresco in which the CMIS service returns
one less result than what's really there):
+
+    >>> results = repo.query("select * from cmis:document where contains('test')")
+    >>> for result in results:
+    ...     print result.name
+    ...
+    Test Document2
+    example test script.js
+
+ #. Alternatively, you can also get objects by their their path, like this:
+
+    >>> someDoc = repo.getObjectByPath('/someFolder/Test Document')
+    >>> someDoc.id
+    u'workspace://SpacesStore/2cf36ad5-92b0-4731-94a4-9f3fef25b479'
+
+ #. Or their object ID, like this:
+ 
+    >>> someDoc = repo.getObject('workspace://SpacesStore/2cf36ad5-92b0-4731-94a4-9f3fef25b479')
+    >>> someDoc.name
+    u'Test Document'
+ 
+ #. Folder objects have getChildren() and getDescendants() methods that will return a list
of :class:`CmisObject` objects:
+ 
+	>>> children= someFolder.getChildren()
+	>>> for child in children:
+	...     print child.name
+	... 
+	Test Document
+	Test Document2  

Added: chemistry/site/trunk/content/python/docs/_sources/index.txt
URL: http://svn.apache.org/viewvc/chemistry/site/trunk/content/python/docs/_sources/index.txt?rev=1080057&view=auto
==============================================================================
--- chemistry/site/trunk/content/python/docs/_sources/index.txt (added)
+++ chemistry/site/trunk/content/python/docs/_sources/index.txt Wed Mar  9 23:29:42 2011
@@ -0,0 +1,47 @@
+..
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+
+.. CMIS Library documentation master file, created by
+   sphinx-quickstart on Thu Dec 10 10:12:43 2009.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+Welcome to CMIS Library's documentation!
+========================================
+
+Contents:
+
+.. toctree::
+   :maxdepth: 2
+
+   about.rst
+   install.rst
+   examples.rst
+   code.rst
+   devguide.rst
+   tests.rst
+   docs.rst
+   sample-data.rst
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+

Added: chemistry/site/trunk/content/python/docs/_sources/install.txt
URL: http://svn.apache.org/viewvc/chemistry/site/trunk/content/python/docs/_sources/install.txt?rev=1080057&view=auto
==============================================================================
--- chemistry/site/trunk/content/python/docs/_sources/install.txt (added)
+++ chemistry/site/trunk/content/python/docs/_sources/install.txt Wed Mar  9 23:29:42 2011
@@ -0,0 +1,39 @@
+..
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+
+Installation
+============
+
+Requirements
+------------
+These requirements must be met:
+ - Python 2.6.x
+ - CMIS provider compliant with CMIS 1.0
+
+Steps
+-----
+ #. If you don't have `Python <http://www.python.org>`_ installed already, do so.
+ #. If you don't have `setuptools <http://pypi.python.org/pypi/setuptools>`_ installed
already, do so.
+ #. Once setuptools is installed, type `easy_install cmislib`
+ #. That's it! 
+
+Once you do that, you should be able to fire up Python on the command-line and import cmislib
successfully.
+
+  >>> from cmislib import CmisClient, Repository, Folder
+
+To validate everything is working, run some :ref:`tests` or walk through some :ref:`examples`.

Added: chemistry/site/trunk/content/python/docs/_sources/sample-data.txt
URL: http://svn.apache.org/viewvc/chemistry/site/trunk/content/python/docs/_sources/sample-data.txt?rev=1080057&view=auto
==============================================================================
--- chemistry/site/trunk/content/python/docs/_sources/sample-data.txt (added)
+++ chemistry/site/trunk/content/python/docs/_sources/sample-data.txt Wed Mar  9 23:29:42
2011
@@ -0,0 +1,24 @@
+..
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+
+Sample Data
+===========
+
+The /path/to/cmislib/src/data directory contains some sample XML responses from a CMIS service.
These are for sample and development purposes and can safely be ignored if you are an end-user
of the library.
+
+In some cases there are two files for the same response. For example, 'types.xml' came from
Alfresco while 'types.chemistry.xml' came from the simple Apache Chemistry test server.

Added: chemistry/site/trunk/content/python/docs/_sources/tests.txt
URL: http://svn.apache.org/viewvc/chemistry/site/trunk/content/python/docs/_sources/tests.txt?rev=1080057&view=auto
==============================================================================
--- chemistry/site/trunk/content/python/docs/_sources/tests.txt (added)
+++ chemistry/site/trunk/content/python/docs/_sources/tests.txt Wed Mar  9 23:29:42 2011
@@ -0,0 +1,43 @@
+..
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+
+.. _tests:
+
+=====
+Tests
+=====
+
+This code includes unit tests. To run the tests::
+
+   cd /path/to/cmislib/tests
+   Edit settings.py
+   Set REPOSITORY_URL, USERNAME, PASSWORD
+   Optionally, set TEST_ROOT_PATH and other settings to meet your needs
+   python cmislibtest.py
+
+.. note::
+   http://cmis.alfresco.com is a freely-available, hosted CMIS service. If you want to use
that for testing, the URL is http://cmis.alfresco.com/s/cmis and the username and password
are admin/admin. See the wiki for other known CMIS test servers.
+
+If everything goes well, you should see::
+
+   Ran X tests in 3.607s
+
+   OK
+
+.. note::
+  Depending on the implementation of the CMIS provider, you may see errors or failures instead
of 'OK'.

Added: chemistry/site/trunk/content/python/docs/_static/basic.css
URL: http://svn.apache.org/viewvc/chemistry/site/trunk/content/python/docs/_static/basic.css?rev=1080057&view=auto
==============================================================================
--- chemistry/site/trunk/content/python/docs/_static/basic.css (added)
+++ chemistry/site/trunk/content/python/docs/_static/basic.css Wed Mar  9 23:29:42 2011
@@ -0,0 +1,405 @@
+/**
+ * Sphinx stylesheet -- basic theme
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ */
+
+/* -- main layout ----------------------------------------------------------- */
+
+div.clearer {
+    clear: both;
+}
+
+/* -- relbar ---------------------------------------------------------------- */
+
+div.related {
+    width: 100%;
+    font-size: 90%;
+}
+
+div.related h3 {
+    display: none;
+}
+
+div.related ul {
+    margin: 0;
+    padding: 0 0 0 10px;
+    list-style: none;
+}
+
+div.related li {
+    display: inline;
+}
+
+div.related li.right {
+    float: right;
+    margin-right: 5px;
+}
+
+/* -- sidebar --------------------------------------------------------------- */
+
+div.sphinxsidebarwrapper {
+    padding: 10px 5px 0 10px;
+}
+
+div.sphinxsidebar {
+    float: left;
+    width: 230px;
+    margin-left: -100%;
+    font-size: 90%;
+}
+
+div.sphinxsidebar ul {
+    list-style: none;
+}
+
+div.sphinxsidebar ul ul,
+div.sphinxsidebar ul.want-points {
+    margin-left: 20px;
+    list-style: square;
+}
+
+div.sphinxsidebar ul ul {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+div.sphinxsidebar form {
+    margin-top: 10px;
+}
+
+div.sphinxsidebar input {
+    border: 1px solid #98dbcc;
+    font-family: sans-serif;
+    font-size: 1em;
+}
+
+img {
+    border: 0;
+}
+
+/* -- search page ----------------------------------------------------------- */
+
+ul.search {
+    margin: 10px 0 0 20px;
+    padding: 0;
+}
+
+ul.search li {
+    padding: 5px 0 5px 20px;
+    background-image: url(file.png);
+    background-repeat: no-repeat;
+    background-position: 0 7px;
+}
+
+ul.search li a {
+    font-weight: bold;
+}
+
+ul.search li div.context {
+    color: #888;
+    margin: 2px 0 0 30px;
+    text-align: left;
+}
+
+ul.keywordmatches li.goodmatch a {
+    font-weight: bold;
+}
+
+/* -- index page ------------------------------------------------------------ */
+
+table.contentstable {
+    width: 90%;
+}
+
+table.contentstable p.biglink {
+    line-height: 150%;
+}
+
+a.biglink {
+    font-size: 1.3em;
+}
+
+span.linkdescr {
+    font-style: italic;
+    padding-top: 5px;
+    font-size: 90%;
+}
+
+/* -- general index --------------------------------------------------------- */
+
+table.indextable td {
+    text-align: left;
+    vertical-align: top;
+}
+
+table.indextable dl, table.indextable dd {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+table.indextable tr.pcap {
+    height: 10px;
+}
+
+table.indextable tr.cap {
+    margin-top: 10px;
+    background-color: #f2f2f2;
+}
+
+img.toggler {
+    margin-right: 3px;
+    margin-top: 3px;
+    cursor: pointer;
+}
+
+/* -- general body styles --------------------------------------------------- */
+
+a.headerlink {
+    visibility: hidden;
+}
+
+h1:hover > a.headerlink,
+h2:hover > a.headerlink,
+h3:hover > a.headerlink,
+h4:hover > a.headerlink,
+h5:hover > a.headerlink,
+h6:hover > a.headerlink,
+dt:hover > a.headerlink {
+    visibility: visible;
+}
+
+div.body p.caption {
+    text-align: inherit;
+}
+
+div.body td {
+    text-align: left;
+}
+
+.field-list ul {
+    padding-left: 1em;
+}
+
+.first {
+    margin-top: 0 !important;
+}
+
+p.rubric {
+    margin-top: 30px;
+    font-weight: bold;
+}
+
+/* -- sidebars -------------------------------------------------------------- */
+
+div.sidebar {
+    margin: 0 0 0.5em 1em;
+    border: 1px solid #ddb;
+    padding: 7px 7px 0 7px;
+    background-color: #ffe;
+    width: 40%;
+    float: right;
+}
+
+p.sidebar-title {
+    font-weight: bold;
+}
+
+/* -- topics ---------------------------------------------------------------- */
+
+div.topic {
+    border: 1px solid #ccc;
+    padding: 7px 7px 0 7px;
+    margin: 10px 0 10px 0;
+}
+
+p.topic-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    margin-top: 10px;
+}
+
+/* -- admonitions ----------------------------------------------------------- */
+
+div.admonition {
+    margin-top: 10px;
+    margin-bottom: 10px;
+    padding: 7px;
+}
+
+div.admonition dt {
+    font-weight: bold;
+}
+
+div.admonition dl {
+    margin-bottom: 0;
+}
+
+p.admonition-title {
+    margin: 0px 10px 5px 0px;
+    font-weight: bold;
+}
+
+div.body p.centered {
+    text-align: center;
+    margin-top: 25px;
+}
+
+/* -- tables ---------------------------------------------------------------- */
+
+table.docutils {
+    border: 0;
+    border-collapse: collapse;
+}
+
+table.docutils td, table.docutils th {
+    padding: 1px 8px 1px 0;
+    border-top: 0;
+    border-left: 0;
+    border-right: 0;
+    border-bottom: 1px solid #aaa;
+}
+
+table.field-list td, table.field-list th {
+    border: 0 !important;
+}
+
+table.footnote td, table.footnote th {
+    border: 0 !important;
+}
+
+th {
+    text-align: left;
+    padding-right: 5px;
+}
+
+/* -- other body styles ----------------------------------------------------- */
+
+dl {
+    margin-bottom: 15px;
+}
+
+dd p {
+    margin-top: 0px;
+}
+
+dd ul, dd table {
+    margin-bottom: 10px;
+}
+
+dd {
+    margin-top: 3px;
+    margin-bottom: 10px;
+    margin-left: 30px;
+}
+
+dt:target, .highlight {
+    background-color: #fbe54e;
+}
+
+dl.glossary dt {
+    font-weight: bold;
+    font-size: 1.1em;
+}
+
+.field-list ul {
+    margin: 0;
+    padding-left: 1em;
+}
+
+.field-list p {
+    margin: 0;
+}
+
+.refcount {
+    color: #060;
+}
+
+.optional {
+    font-size: 1.3em;
+}
+
+.versionmodified {
+    font-style: italic;
+}
+
+.system-message {
+    background-color: #fda;
+    padding: 5px;
+    border: 3px solid red;
+}
+
+.footnote:target  {
+    background-color: #ffa
+}
+
+/* -- code displays --------------------------------------------------------- */
+
+pre {
+    overflow: auto;
+}
+
+td.linenos pre {
+    padding: 5px 0px;
+    border: 0;
+    background-color: transparent;
+    color: #aaa;
+}
+
+table.highlighttable {
+    margin-left: 0.5em;
+}
+
+table.highlighttable td {
+    padding: 0 0.5em 0 0.5em;
+}
+
+tt.descname {
+    background-color: transparent;
+    font-weight: bold;
+    font-size: 1.2em;
+}
+
+tt.descclassname {
+    background-color: transparent;
+}
+
+tt.xref, a tt {
+    background-color: transparent;
+    font-weight: bold;
+}
+
+h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
+    background-color: transparent;
+}
+
+/* -- math display ---------------------------------------------------------- */
+
+img.math {
+    vertical-align: middle;
+}
+
+div.body div.math p {
+    text-align: center;
+}
+
+span.eqno {
+    float: right;
+}
+
+/* -- printout stylesheet --------------------------------------------------- */
+
+@media print {
+    div.document,
+    div.documentwrapper,
+    div.bodywrapper {
+        margin: 0;
+        width: 100%;
+    }
+
+    div.sphinxsidebar,
+    div.related,
+    div.footer,
+    #top-link {
+        display: none;
+    }
+}

Added: chemistry/site/trunk/content/python/docs/_static/default.css
URL: http://svn.apache.org/viewvc/chemistry/site/trunk/content/python/docs/_static/default.css?rev=1080057&view=auto
==============================================================================
--- chemistry/site/trunk/content/python/docs/_static/default.css (added)
+++ chemistry/site/trunk/content/python/docs/_static/default.css Wed Mar  9 23:29:42 2011
@@ -0,0 +1,210 @@
+/**
+ * Sphinx stylesheet -- default theme
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ */
+
+@import url("basic.css");
+
+/* -- page layout ----------------------------------------------------------- */
+
+body {
+    font-family: sans-serif;
+    font-size: 100%;
+    background-color: #11303d;
+    color: #000;
+    margin: 0;
+    padding: 0;
+}
+
+div.document {
+    background-color: #1c4e63;
+}
+
+div.documentwrapper {
+    float: left;
+    width: 100%;
+}
+
+div.bodywrapper {
+    margin: 0 0 0 230px;
+}
+
+div.body {
+    background-color: #ffffff;
+    color: #000000;
+    padding: 0 20px 30px 20px;
+}
+
+div.footer {
+    color: #ffffff;
+    width: 100%;
+    padding: 9px 0 9px 0;
+    text-align: center;
+    font-size: 75%;
+}
+
+div.footer a {
+    color: #ffffff;
+    text-decoration: underline;
+}
+
+div.related {
+    background-color: #133f52;
+    line-height: 30px;
+    color: #ffffff;
+}
+
+div.related a {
+    color: #ffffff;
+}
+
+div.sphinxsidebar {
+}
+
+div.sphinxsidebar h3 {
+    font-family: 'Trebuchet MS', sans-serif;
+    color: #ffffff;
+    font-size: 1.4em;
+    font-weight: normal;
+    margin: 0;
+    padding: 0;
+}
+
+div.sphinxsidebar h3 a {
+    color: #ffffff;
+}
+
+div.sphinxsidebar h4 {
+    font-family: 'Trebuchet MS', sans-serif;
+    color: #ffffff;
+    font-size: 1.3em;
+    font-weight: normal;
+    margin: 5px 0 0 0;
+    padding: 0;
+}
+
+div.sphinxsidebar p {
+    color: #ffffff;
+}
+
+div.sphinxsidebar p.topless {
+    margin: 5px 10px 10px 10px;
+}
+
+div.sphinxsidebar ul {
+    margin: 10px;
+    padding: 0;
+    color: #ffffff;
+}
+
+div.sphinxsidebar a {
+    color: #98dbcc;
+}
+
+div.sphinxsidebar input {
+    border: 1px solid #98dbcc;
+    font-family: sans-serif;
+    font-size: 1em;
+}
+
+/* -- body styles ----------------------------------------------------------- */
+
+a {
+    color: #355f7c;
+    text-decoration: none;
+}
+
+a:hover {
+    text-decoration: underline;
+}
+
+div.body p, div.body dd, div.body li {
+    text-align: justify;
+    line-height: 130%;
+}
+
+div.body h1,
+div.body h2,
+div.body h3,
+div.body h4,
+div.body h5,
+div.body h6 {
+    font-family: 'Trebuchet MS', sans-serif;
+    background-color: #f2f2f2;
+    font-weight: normal;
+    color: #20435c;
+    border-bottom: 1px solid #ccc;
+    margin: 20px -20px 10px -20px;
+    padding: 3px 0 3px 10px;
+}
+
+div.body h1 { margin-top: 0; font-size: 200%; }
+div.body h2 { font-size: 160%; }
+div.body h3 { font-size: 140%; }
+div.body h4 { font-size: 120%; }
+div.body h5 { font-size: 110%; }
+div.body h6 { font-size: 100%; }
+
+a.headerlink {
+    color: #c60f0f;
+    font-size: 0.8em;
+    padding: 0 4px 0 4px;
+    text-decoration: none;
+}
+
+a.headerlink:hover {
+    background-color: #c60f0f;
+    color: white;
+}
+
+div.body p, div.body dd, div.body li {
+    text-align: justify;
+    line-height: 130%;
+}
+
+div.admonition p.admonition-title + p {
+    display: inline;
+}
+
+div.note {
+    background-color: #eee;
+    border: 1px solid #ccc;
+}
+
+div.seealso {
+    background-color: #ffc;
+    border: 1px solid #ff6;
+}
+
+div.topic {
+    background-color: #eee;
+}
+
+div.warning {
+    background-color: #ffe4e4;
+    border: 1px solid #f66;
+}
+
+p.admonition-title {
+    display: inline;
+}
+
+p.admonition-title:after {
+    content: ":";
+}
+
+pre {
+    padding: 5px;
+    background-color: #eeffcc;
+    color: #333333;
+    line-height: 120%;
+    border: 1px solid #ac9;
+    border-left: none;
+    border-right: none;
+}
+
+tt {
+    background-color: #ecf0f3;
+    padding: 0 1px 0 1px;
+    font-size: 0.95em;
+}
\ No newline at end of file

Added: chemistry/site/trunk/content/python/docs/_static/doctools.js
URL: http://svn.apache.org/viewvc/chemistry/site/trunk/content/python/docs/_static/doctools.js?rev=1080057&view=auto
==============================================================================
--- chemistry/site/trunk/content/python/docs/_static/doctools.js (added)
+++ chemistry/site/trunk/content/python/docs/_static/doctools.js Wed Mar  9 23:29:42 2011
@@ -0,0 +1,232 @@
+/// XXX: make it cross browser
+
+/**
+ * make the code below compatible with browsers without
+ * an installed firebug like debugger
+ */
+if (!window.console || !console.firebug) {
+  var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
+      "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
+  window.console = {};
+  for (var i = 0; i < names.length; ++i)
+    window.console[names[i]] = function() {}
+}
+
+/**
+ * small helper function to urldecode strings
+ */
+jQuery.urldecode = function(x) {
+  return decodeURIComponent(x).replace(/\+/g, ' ');
+}
+
+/**
+ * small helper function to urlencode strings
+ */
+jQuery.urlencode = encodeURIComponent;
+
+/**
+ * This function returns the parsed url parameters of the
+ * current request. Multiple values per key are supported,
+ * it will always return arrays of strings for the value parts.
+ */
+jQuery.getQueryParameters = function(s) {
+  if (typeof s == 'undefined')
+    s = document.location.search;
+  var parts = s.substr(s.indexOf('?') + 1).split('&');
+  var result = {};
+  for (var i = 0; i < parts.length; i++) {
+    var tmp = parts[i].split('=', 2);
+    var key = jQuery.urldecode(tmp[0]);
+    var value = jQuery.urldecode(tmp[1]);
+    if (key in result)
+      result[key].push(value);
+    else
+      result[key] = [value];
+  }
+  return result;
+}
+
+/**
+ * small function to check if an array contains
+ * a given item.
+ */
+jQuery.contains = function(arr, item) {
+  for (var i = 0; i < arr.length; i++) {
+    if (arr[i] == item)
+      return true;
+  }
+  return false;
+}
+
+/**
+ * highlight a given string on a jquery object by wrapping it in
+ * span elements with the given class name.
+ */
+jQuery.fn.highlightText = function(text, className) {
+  function highlight(node) {
+    if (node.nodeType == 3) {
+      var val = node.nodeValue;
+      var pos = val.toLowerCase().indexOf(text);
+      if (pos >= 0 && !jQuery.className.has(node.parentNode, className)) {
+        var span = document.createElement("span");
+        span.className = className;
+        span.appendChild(document.createTextNode(val.substr(pos, text.length)));
+        node.parentNode.insertBefore(span, node.parentNode.insertBefore(
+          document.createTextNode(val.substr(pos + text.length)),
+          node.nextSibling));
+        node.nodeValue = val.substr(0, pos);
+      }
+    }
+    else if (!jQuery(node).is("button, select, textarea")) {
+      jQuery.each(node.childNodes, function() {
+        highlight(this)
+      });
+    }
+  }
+  return this.each(function() {
+    highlight(this);
+  });
+}
+
+/**
+ * Small JavaScript module for the documentation.
+ */
+var Documentation = {
+
+  init : function() {
+    this.fixFirefoxAnchorBug();
+    this.highlightSearchWords();
+    this.initModIndex();
+  },
+
+  /**
+   * i18n support
+   */
+  TRANSLATIONS : {},
+  PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; },
+  LOCALE : 'unknown',
+
+  // gettext and ngettext don't access this so that the functions
+  // can savely bound to a different name (_ = Documentation.gettext)
+  gettext : function(string) {
+    var translated = Documentation.TRANSLATIONS[string];
+    if (typeof translated == 'undefined')
+      return string;
+    return (typeof translated == 'string') ? translated : translated[0];
+  },
+
+  ngettext : function(singular, plural, n) {
+    var translated = Documentation.TRANSLATIONS[singular];
+    if (typeof translated == 'undefined')
+      return (n == 1) ? singular : plural;
+    return translated[Documentation.PLURALEXPR(n)];
+  },
+
+  addTranslations : function(catalog) {
+    for (var key in catalog.messages)
+      this.TRANSLATIONS[key] = catalog.messages[key];
+    this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
+    this.LOCALE = catalog.locale;
+  },
+
+  /**
+   * add context elements like header anchor links
+   */
+  addContextElements : function() {
+    $('div[id] > :header:first').each(function() {
+      $('<a class="headerlink">\u00B6</a>').
+      attr('href', '#' + this.id).
+      attr('title', _('Permalink to this headline')).
+      appendTo(this);
+    });
+    $('dt[id]').each(function() {
+      $('<a class="headerlink">\u00B6</a>').
+      attr('href', '#' + this.id).
+      attr('title', _('Permalink to this definition')).
+      appendTo(this);
+    });
+  },
+
+  /**
+   * workaround a firefox stupidity
+   */
+  fixFirefoxAnchorBug : function() {
+    if (document.location.hash && $.browser.mozilla)
+      window.setTimeout(function() {
+        document.location.href += '';
+      }, 10);
+  },
+
+  /**
+   * highlight the search words provided in the url in the text
+   */
+  highlightSearchWords : function() {
+    var params = $.getQueryParameters();
+    var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
+    if (terms.length) {
+      var body = $('div.body');
+      window.setTimeout(function() {
+        $.each(terms, function() {
+          body.highlightText(this.toLowerCase(), 'highlight');
+        });
+      }, 10);
+      $('<li class="highlight-link"><a href="javascript:Documentation.' +
+        'hideSearchWords()">' + _('Hide Search Matches') + '</a></li>')
+          .appendTo($('.sidebar .this-page-menu'));
+    }
+  },
+
+  /**
+   * init the modindex toggle buttons
+   */
+  initModIndex : function() {
+    var togglers = $('img.toggler').click(function() {
+      var src = $(this).attr('src');
+      var idnum = $(this).attr('id').substr(7);
+      console.log($('tr.cg-' + idnum).toggle());
+      if (src.substr(-9) == 'minus.png')
+        $(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
+      else
+        $(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
+    }).css('display', '');
+    if (DOCUMENTATION_OPTIONS.COLLAPSE_MODINDEX) {
+        togglers.click();
+    }
+  },
+
+  /**
+   * helper function to hide the search marks again
+   */
+  hideSearchWords : function() {
+    $('.sidebar .this-page-menu li.highlight-link').fadeOut(300);
+    $('span.highlight').removeClass('highlight');
+  },
+
+  /**
+   * make the url absolute
+   */
+  makeURL : function(relativeURL) {
+    return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
+  },
+
+  /**
+   * get the current relative url
+   */
+  getCurrentURL : function() {
+    var path = document.location.pathname;
+    var parts = path.split(/\//);
+    $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
+      if (this == '..')
+        parts.pop();
+    });
+    var url = parts.join('/');
+    return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
+  }
+};
+
+// quick alias for translations
+_ = Documentation.gettext;
+
+$(document).ready(function() {
+  Documentation.init();
+});

Added: chemistry/site/trunk/content/python/docs/_static/file.png
URL: http://svn.apache.org/viewvc/chemistry/site/trunk/content/python/docs/_static/file.png?rev=1080057&view=auto
==============================================================================
Binary file - no diff available.

Propchange: chemistry/site/trunk/content/python/docs/_static/file.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream



Mime
View raw message