From f752fd47e5c0e3f94d45bae72fb8147ffca9db6c Mon Sep 17 00:00:00 2001 From: Anton Beloglazov Date: Wed, 19 Sep 2012 14:45:26 +1000 Subject: [PATCH] Added the Requests library, removed sniffer --- README.rst | 14 +++++++------- doc/blueprint/openstack-neat-blueprint.epub | Bin 273102 -> 273104 bytes doc/blueprint/openstack-neat-blueprint.html | 2 +- doc/blueprint/openstack-neat-blueprint.pdf | Bin 560129 -> 560145 bytes doc/blueprint/src/openstack-neat-blueprint.md | 14 +++++++------- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/README.rst b/README.rst index 151f35e..0fa91ac 100644 --- a/README.rst +++ b/README.rst @@ -536,21 +536,21 @@ the required components: 1. `distribute `_ – a library for working with Python module distributions, released under the Python Software Foundation License. -2. `sniffer `_ – a Python auto-testing - tool, released under the MIT License. -3. `pyqcy `_ – a QuickCheck-like testing +2. `pyqcy `_ – a QuickCheck-like testing framework for Python, released under the FreeBSD License. -4. `mocktest `_ – a mocking library +3. `mocktest `_ – a mocking library for Python, released under the LGPL License. -5. `PyContracts `_ – a Python +4. `PyContracts `_ – a Python library for Design by Contract (DbC), released under the GNU Lesser General Public License. -6. `SQLAlchemy `_ – a Python SQL toolkit and +5. `SQLAlchemy `_ – a Python SQL toolkit and Object Relational Mapper (used by the core OpenStack service), released under the MIT License. -7. `Bottle `_ – a micro web-framework for Python, +6. `Bottle `_ – a micro web-framework for Python, authentication using the same credentials used to authenticate in the Nova API, released under the MIT License. +7. `Requests `_ – a Python HTTP client + library, released under the ISC License. 8. `python-novaclient `_ – a Python Nova API client implementation, released under the Apache 2.0 License. diff --git a/doc/blueprint/openstack-neat-blueprint.epub b/doc/blueprint/openstack-neat-blueprint.epub index 1d3a0a8cf3486da37c52fe2f0a2608fe7da4a059..b63e8682c11deb428ba2a8bf777b2ba1affae53a 100644 GIT binary patch delta 4398 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 W4=(<^1lW!%z6OSpEbxHOr}+;J(U$xG diff --git a/doc/blueprint/openstack-neat-blueprint.html b/doc/blueprint/openstack-neat-blueprint.html index 5398c82..91fc796 100644 --- a/doc/blueprint/openstack-neat-blueprint.html +++ b/doc/blueprint/openstack-neat-blueprint.html @@ -231,12 +231,12 @@ code > span.er { color: #ff0000; font-weight: bold; }

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

  1. distribute – a library for working with Python module distributions, released under the Python Software Foundation License.
  2. -
  3. sniffer – a Python auto-testing tool, released under the MIT License.
  4. pyqcy – a QuickCheck-like testing framework for Python, released under the FreeBSD License.
  5. mocktest – a mocking library for Python, released under the LGPL License.
  6. PyContracts – a Python library for Design by Contract (DbC), released under the GNU Lesser General Public License.
  7. SQLAlchemy – a Python SQL toolkit and Object Relational Mapper (used by the core OpenStack service), released under the MIT License.
  8. Bottle – a micro web-framework for Python, authentication using the same credentials used to authenticate in the Nova API, released under the MIT License.
  9. +
  10. Requests – a Python HTTP client library, released under the ISC License.
  11. python-novaclient – a Python Nova API client implementation, released under the Apache 2.0 License.
  12. Sphinx – a documentation generator for Python, released under the BSD License.
diff --git a/doc/blueprint/openstack-neat-blueprint.pdf b/doc/blueprint/openstack-neat-blueprint.pdf index c4099431a5febe8c7ff2fcedbfd5dc5b106f079a..6b08206ecd97a58c0aab2ee2cbc2c02b6ba95a87 100644 GIT binary patch delta 4439 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 x&u%mdS@3aDpqV