From e45c3bf7dcc2c6918805f56938a5b8111e7977fc Mon Sep 17 00:00:00 2001 From: Anton Beloglazov Date: Mon, 6 Aug 2012 10:47:55 +1000 Subject: [PATCH] Added mocktest into the libraries section --- README.rst | 12 +++++++----- doc/blueprint/openstack-neat-blueprint.epub | Bin 272954 -> 272984 bytes doc/blueprint/openstack-neat-blueprint.html | 1 + doc/blueprint/openstack-neat-blueprint.pdf | Bin 559166 -> 559353 bytes doc/blueprint/src/openstack-neat-blueprint.md | 12 +++++++----- 5 files changed, 15 insertions(+), 10 deletions(-) diff --git a/README.rst b/README.rst index b064370..3ac525f 100644 --- a/README.rst +++ b/README.rst @@ -532,18 +532,20 @@ the required components: 1. `pyqcy `_ – a QuickCheck-like testing framework for Python, FreeBSD License. -2. `PyContracts `_ – a Python +2. `mocktest `_ – a mocking library + for Python, LGPL License. +3. `PyContracts `_ – a Python library for Design by Contract (DbC), GNU Lesser General Public License. -3. `SQLAlchemy `_ – a Python SQL toolkit and +4. `SQLAlchemy `_ – a Python SQL toolkit and Object Relational Mapper (used by the core OpenStack service), MIT License. -4. `Bottle `_ – a micro web-framework for Python, +5. `Bottle `_ – a micro web-framework for Python, authentication using the same credentials used to authenticate in the Nova API, MIT License. -5. `python-novaclient `_ +6. `python-novaclient `_ – a Python Nova API client implementation, Apache 2.0 License. -6. `Sphinx `_ – a documentation generator for +7. `Sphinx `_ – a documentation generator for Python, BSD License. Global Manager diff --git a/doc/blueprint/openstack-neat-blueprint.epub b/doc/blueprint/openstack-neat-blueprint.epub index 933e903130f10ce87465ddb609a87e63b4085c8c..57f91b3a2b46726357fc2e8f45fb9082d14ab2ad 100644 GIT binary patch delta 3941 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 delta 3913 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 KOax9Ifd2qL&=9-; diff --git a/doc/blueprint/openstack-neat-blueprint.html b/doc/blueprint/openstack-neat-blueprint.html index 85d3f4d..d443827 100644 --- a/doc/blueprint/openstack-neat-blueprint.html +++ b/doc/blueprint/openstack-neat-blueprint.html @@ -231,6 +231,7 @@ code > span.er { color: #ff0000; font-weight: bold; }

The following third party libraries are planned to be used to implement the required components:

  1. pyqcy – a QuickCheck-like testing framework for Python, FreeBSD License.
  2. +
  3. mocktest – a mocking library for Python, LGPL License.
  4. PyContracts – a Python library for Design by Contract (DbC), GNU Lesser General Public License.
  5. SQLAlchemy – a Python SQL toolkit and Object Relational Mapper (used by the core OpenStack service), MIT License.
  6. Bottle – a micro web-framework for Python, authentication using the same credentials used to authenticate in the Nova API, MIT License.
  7. diff --git a/doc/blueprint/openstack-neat-blueprint.pdf b/doc/blueprint/openstack-neat-blueprint.pdf index d9a5298f930a19d2a9c81ab20ce151a47a2c5667..4569bfabf49f31e8087954081252048776b5b090 100644 GIT binary patch delta 8768 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 delta 8616 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 diff --git a/doc/blueprint/src/openstack-neat-blueprint.md b/doc/blueprint/src/openstack-neat-blueprint.md index d2f7472..1e7ccdb 100644 --- a/doc/blueprint/src/openstack-neat-blueprint.md +++ b/doc/blueprint/src/openstack-neat-blueprint.md @@ -411,15 +411,17 @@ The following third party libraries are planned to be used to implement the requ 1. [pyqcy](https://github.com/Xion/pyqcy) -- a QuickCheck-like testing framework for Python, FreeBSD License. -2. [PyContracts](https://github.com/AndreaCensi/contracts) -- a Python library for Design by +2. [mocktest](https://github.com/gfxmonk/mocktest) -- a mocking library for Python, LGPL + License. +3. [PyContracts](https://github.com/AndreaCensi/contracts) -- a Python library for Design by Contract (DbC), GNU Lesser General Public License. -3. [SQLAlchemy](http://www.sqlalchemy.org/) -- a Python SQL toolkit and Object Relational Mapper +4. [SQLAlchemy](http://www.sqlalchemy.org/) -- a Python SQL toolkit and Object Relational Mapper (used by the core OpenStack service), MIT License. -4. [Bottle](http://bottlepy.org/) -- a micro web-framework for Python, authentication using the same +5. [Bottle](http://bottlepy.org/) -- a micro web-framework for Python, authentication using the same credentials used to authenticate in the Nova API, MIT License. -5. [python-novaclient](https://github.com/openstack/python-novaclient) -- a Python Nova API client +6. [python-novaclient](https://github.com/openstack/python-novaclient) -- a Python Nova API client implementation, Apache 2.0 License. -6. [Sphinx](http://sphinx.pocoo.org/) -- a documentation generator for Python, BSD License. +7. [Sphinx](http://sphinx.pocoo.org/) -- a documentation generator for Python, BSD License. ## Global Manager