IGNITE-14056: Fixed README and documentation
This closes #3
diff --git a/README.md b/README.md
index 26b9a6a..24f7b4e 100644
--- a/README.md
+++ b/README.md
@@ -9,16 +9,16 @@
## Installation
-#### *for end user*
+### *for end user*
If you only want to use the `pyignite` module in your project, do:
-```
+```bash
$ pip install pyignite
```
-#### *for developer*
+### *for developer*
If you want to run tests, examples or build documentation, clone
the whole repository:
-```
+```bash
$ git clone git@github.com:apache/ignite-python-thin-client.git
$ pip install -e .
```
@@ -30,32 +30,47 @@
Then run through the contents of `requirements` folder to install
the additional requirements into your working Python environment using
-```
+```bash
$ pip install -r requirements/<your task>.txt
```
You may also want to consult the `setuptools` manual about using `setup.py`.
+### Updating from older version
+
+To upgrade an existing package, use the following command:
+```bash
+pip install --upgrade pyignite
+```
+
+To install the latest version of a package:
+```bash
+pip install pyignite
+```
+
+To install a specific version:
+```bash
+pip install pyignite==0.4.0
+```
+
## Documentation
[The package documentation](https://apache-ignite-binary-protocol-client.readthedocs.io)
is available at *RTD* for your convenience.
If you want to build the documentation from source, do the developer
-installation as described above, then run the following commands:
-```
-$ cd ignite/modules/platforms/python
+installation as described above, then run the following commands from the
+client's root directory:
+```bash
$ pip install -r requirements/docs.txt
$ cd docs
$ make html
```
-Then open `ignite/modules/platforms/python/docs/generated/html/index.html`
-in your browser.
+Then open `docs/generated/html/index.html` in your browser.
## Examples
-Some examples of using pyignite are provided in
-`ignite/modules/platforms/python/examples` folder. They are extensively
-commented in the
+Some examples of using pyignite are provided in `examples` folder. They are
+extensively commented in the
“[Examples of usage](https://apache-ignite-binary-protocol-client.readthedocs.io/en/latest/examples.html)”
section of the documentation.
@@ -63,30 +78,35 @@
installed, and Apache Ignite node is running on localhost:10800.
## Testing
-*NB!* All tests require Apache Ignite node running on localhost:10800. For the convenience, `docker-compose.yml` is present.
-So installing `docker` and `docker-compose` is recommended. Also, it is recommended installing `pyignite` in development
-mode. You can do that using following command:
+*NB!* It is recommended installing `pyignite` in development mode.
+Refer to [this section](#for-developer) for instructions.
+
+Do not forget to install test requirements:
+```bash
+$ pip install -r requirements/install.txt -r requirements/tests.txt
```
-$ pip install -e .
+
+Also, you'll need to have a binary release of Ignite with lib4j2 enabled and
+`IGNITE_HOME` properly set:
+```bash
+$ cd <ignite_binary_release>
+$ export IGNITE_HOME=$(pwd)
+$ cp -r $IGNITE_HOME/libs/optional/ignite-log4j2 $IGNITE_HOME/libs/
```
-### Run without ssl
-```
-$ docker-compose down && docker-compose up -d ignite
+### Run basic tests
+```bash
$ pytest
```
### Run with examples
-```
-$ docker-compose down && docker-compose up -d ignite
-$ pytest --examples
+```bash
+$ pytest --examples
```
### Run with ssl and not encrypted key
-```
-$ docker-compose down && docker-compose up -d ignite
-$ pytest --use-ssl=True --ssl-certfile=./tests/config/ssl/client_full.pem
+```bash
+$ pytest --use-ssl=True --ssl-certfile=./tests/ssl/client_full.pem
```
### Run with ssl and password-protected key
-```
-$ docker-compose down && docker-compose up -d ignite
+```bash
$ pytest --use-ssl=True --ssl-certfile=./tests/config/ssl/client_with_pass_full.pem --ssl-keyfile-password=654321
```
diff --git a/docs/datatypes/parsers.rst b/docs/datatypes/parsers.rst
index 71f9aac..92329cc 100644
--- a/docs/datatypes/parsers.rst
+++ b/docs/datatypes/parsers.rst
@@ -47,94 +47,94 @@
of interoperability, you may have to sneak one or the other class, along
with your data, in to some API function as a *type conversion hint*.
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|`type_code`|Apache Ignite |Python type |Parser/constructor |
-| |docs reference |or class |class |
-+===========+====================+===============================+==================================================================+
-|*Primitive data types* |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x01 |Byte_ |int |:class:`~pyignite.datatypes.primitive_objects.ByteObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x02 |Short_ |int |:class:`~pyignite.datatypes.primitive_objects.ShortObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x03 |Int_ |int |:class:`~pyignite.datatypes.primitive_objects.IntObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x04 |Long_ |int |:class:`~pyignite.datatypes.primitive_objects.LongObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x05 |Float_ |float |:class:`~pyignite.datatypes.primitive_objects.FloatObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x06 |Double_ |float |:class:`~pyignite.datatypes.primitive_objects.DoubleObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x07 |Char_ |str |:class:`~pyignite.datatypes.primitive_objects.CharObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x08 |Bool_ |bool |:class:`~pyignite.datatypes.primitive_objects.BoolObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x65 |Null_ |NoneType |:class:`~pyignite.datatypes.null_object.Null` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|*Standard objects* |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x09 |String_ |Str |:class:`~pyignite.datatypes.standard.String` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x0a |UUID_ |uuid.UUID |:class:`~pyignite.datatypes.standard.UUIDObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x21 |Timestamp_ |tuple |:class:`~pyignite.datatypes.standard.TimestampObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x0b |Date_ |datetime.datetime |:class:`~pyignite.datatypes.standard.DateObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x24 |Time_ |datetime.timedelta |:class:`~pyignite.datatypes.standard.TimeObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x1e |Decimal_ |decimal.Decimal |:class:`~pyignite.datatypes.standard.DecimalObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x1c |Enum_ |tuple |:class:`~pyignite.datatypes.standard.EnumObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x67 |`Binary enum`_ |tuple |:class:`~pyignite.datatypes.standard.BinaryEnumObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|*Arrays of primitives* |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x0c |`Byte array`_ |iterable/bytearray |:class:`~pyignite.datatypes.primitive_arrays.ByteArrayObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x0d |`Short array`_ |iterable/list |:class:`~pyignite.datatypes.primitive_arrays.ShortArrayObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x0e |`Int array`_ |iterable/list |:class:`~pyignite.datatypes.primitive_arrays.IntArrayObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x0f |`Long array`_ |iterable/list |:class:`~pyignite.datatypes.primitive_arrays.LongArrayObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x10 |`Float array`_ |iterable/list |:class:`~pyignite.datatypes.primitive_arrays.FloatArrayObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x11 |`Double array`_ |iterable/list |:class:`~pyignite.datatypes.primitive_arrays.DoubleArrayObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x12 |`Char array`_ |iterable/list |:class:`~pyignite.datatypes.primitive_arrays.CharArrayObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x13 |`Bool array`_ |iterable/list |:class:`~pyignite.datatypes.primitive_arrays.BoolArrayObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|*Arrays of standard objects* |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x14 |`String array`_ |iterable/list |:class:`~pyignite.datatypes.standard.StringArrayObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x15 |`UUID array`_ |iterable/list |:class:`~pyignite.datatypes.standard.UUIDArrayObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x22 |`Timestamp array`_ |iterable/list |:class:`~pyignite.datatypes.standard.TimestampArrayObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x16 |`Date array`_ |iterable/list |:class:`~pyignite.datatypes.standard.DateArrayObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x23 |`Time array`_ |iterable/list |:class:`~pyignite.datatypes.standard.TimeArrayObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x1f |`Decimal array`_ |iterable/list |:class:`~pyignite.datatypes.standard.DecimalArrayObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|*Object collections, special types, and complex object* |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x17 |`Object array`_ |tuple[int, iterable/list] |:class:`~pyignite.datatypes.complex.ObjectArrayObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x18 |`Collection`_ |tuple[int, iterable/list] |:class:`~pyignite.datatypes.complex.CollectionObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x19 |`Map`_ |tuple[int, dict/OrderedDict] |:class:`~pyignite.datatypes.complex.MapObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x1d |`Enum array`_ |iterable/list |:class:`~pyignite.datatypes.standard.EnumArrayObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x67 |`Complex object`_ |object |:class:`~pyignite.datatypes.complex.BinaryObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
-|0x1b |`Wrapped data`_ |tuple[int, bytes] |:class:`~pyignite.datatypes.complex.WrappedDataObject` |
-+-----------+--------------------+-------------------------------+------------------------------------------------------------------+
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+| `type_code` |Apache Ignite |Python type |Parser/constructor |
+| |docs reference |or class |class |
++=============+====================+===============================+==================================================================+
+|*Primitive data types* |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x01 |Byte_ |int |:class:`~pyignite.datatypes.primitive_objects.ByteObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x02 |Short_ |int |:class:`~pyignite.datatypes.primitive_objects.ShortObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x03 |Int_ |int |:class:`~pyignite.datatypes.primitive_objects.IntObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x04 |Long_ |int |:class:`~pyignite.datatypes.primitive_objects.LongObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x05 |Float_ |float |:class:`~pyignite.datatypes.primitive_objects.FloatObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x06 |Double_ |float |:class:`~pyignite.datatypes.primitive_objects.DoubleObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x07 |Char_ |str |:class:`~pyignite.datatypes.primitive_objects.CharObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x08 |Bool_ |bool |:class:`~pyignite.datatypes.primitive_objects.BoolObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x65 |Null_ |NoneType |:class:`~pyignite.datatypes.null_object.Null` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|*Standard objects* |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x09 |String_ |Str |:class:`~pyignite.datatypes.standard.String` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x0a |UUID_ |uuid.UUID |:class:`~pyignite.datatypes.standard.UUIDObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x21 |Timestamp_ |tuple |:class:`~pyignite.datatypes.standard.TimestampObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x0b |Date_ |datetime.datetime |:class:`~pyignite.datatypes.standard.DateObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x24 |Time_ |datetime.timedelta |:class:`~pyignite.datatypes.standard.TimeObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x1e |Decimal_ |decimal.Decimal |:class:`~pyignite.datatypes.standard.DecimalObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x1c |Enum_ |tuple |:class:`~pyignite.datatypes.standard.EnumObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x67 |`Binary enum`_ |tuple |:class:`~pyignite.datatypes.standard.BinaryEnumObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|*Arrays of primitives* |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x0c |`Byte array`_ |iterable/bytearray |:class:`~pyignite.datatypes.primitive_arrays.ByteArrayObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x0d |`Short array`_ |iterable/list |:class:`~pyignite.datatypes.primitive_arrays.ShortArrayObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x0e |`Int array`_ |iterable/list |:class:`~pyignite.datatypes.primitive_arrays.IntArrayObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x0f |`Long array`_ |iterable/list |:class:`~pyignite.datatypes.primitive_arrays.LongArrayObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x10 |`Float array`_ |iterable/list |:class:`~pyignite.datatypes.primitive_arrays.FloatArrayObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x11 |`Double array`_ |iterable/list |:class:`~pyignite.datatypes.primitive_arrays.DoubleArrayObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x12 |`Char array`_ |iterable/list |:class:`~pyignite.datatypes.primitive_arrays.CharArrayObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x13 |`Bool array`_ |iterable/list |:class:`~pyignite.datatypes.primitive_arrays.BoolArrayObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|*Arrays of standard objects* |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x14 |`String array`_ |iterable/list |:class:`~pyignite.datatypes.standard.StringArrayObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x15 |`UUID array`_ |iterable/list |:class:`~pyignite.datatypes.standard.UUIDArrayObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x22 |`Timestamp array`_ |iterable/list |:class:`~pyignite.datatypes.standard.TimestampArrayObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x16 |`Date array`_ |iterable/list |:class:`~pyignite.datatypes.standard.DateArrayObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x23 |`Time array`_ |iterable/list |:class:`~pyignite.datatypes.standard.TimeArrayObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x1f |`Decimal array`_ |iterable/list |:class:`~pyignite.datatypes.standard.DecimalArrayObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|*Object collections, special types, and complex object* |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x17 |`Object array`_ |tuple[int, iterable/list] |:class:`~pyignite.datatypes.complex.ObjectArrayObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x18 |`Collection`_ |tuple[int, iterable/list] |:class:`~pyignite.datatypes.complex.CollectionObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x19 |`Map`_ |tuple[int, dict/OrderedDict] |:class:`~pyignite.datatypes.complex.MapObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x1d |`Enum array`_ |iterable/list |:class:`~pyignite.datatypes.standard.EnumArrayObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x67 |`Complex object`_ |object |:class:`~pyignite.datatypes.complex.BinaryObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
+|0x1b |`Wrapped data`_ |tuple[int, bytes] |:class:`~pyignite.datatypes.complex.WrappedDataObject` |
++-------------+--------------------+-------------------------------+------------------------------------------------------------------+
.. _Byte: https://apacheignite.readme.io/docs/binary-client-protocol-data-format#section-byte
.. _Short: https://apacheignite.readme.io/docs/binary-client-protocol-data-format#section-short
diff --git a/docs/examples.rst b/docs/examples.rst
index 39deef3..4b8c7e3 100644
--- a/docs/examples.rst
+++ b/docs/examples.rst
@@ -212,7 +212,7 @@
:language: python
:lines: 43-50, 63-66, 78-81, 211-218
-Data samples are taken from `Ignite GitHub repository`_.
+Data samples are taken from `PyIgnite GitHub repository`_.
That concludes the preparation of data. Now let us answer some questions.
diff --git a/docs/source/pyignite.connection.generators.rst b/docs/source/pyignite.connection.generators.rst
deleted file mode 100644
index daecda3..0000000
--- a/docs/source/pyignite.connection.generators.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-pyignite.connection.generators module
-=====================================
-
-.. automodule:: pyignite.connection.generators
- :members:
- :undoc-members:
- :show-inheritance:
diff --git a/docs/source/pyignite.connection.rst b/docs/source/pyignite.connection.rst
index 92b07a7..f1acd2b 100644
--- a/docs/source/pyignite.connection.rst
+++ b/docs/source/pyignite.connection.rst
@@ -11,7 +11,6 @@
.. toctree::
- pyignite.connection.generators
pyignite.connection.handshake
pyignite.connection.ssl
diff --git a/requirements/docs.txt b/requirements/docs.txt
index 75ab231..962f07f 100644
--- a/requirements/docs.txt
+++ b/requirements/docs.txt
@@ -2,5 +2,6 @@
# (look up the prebuilt docs in `docs/generated`)
-r install.txt
+wheel==0.36.2
Sphinx==1.7.5
-sphinxcontrib-fulltoc==1.2.0
+sphinxcontrib-fulltoc==1.2.0
\ No newline at end of file