From e0b8230e747cac84fef69ecb261523f768f3616d Mon Sep 17 00:00:00 2001
From: Devendra
Date: Wed, 31 Dec 2014 02:27:47 +0530
Subject: modiying comments for docs
---
 Pubnub.py                              |   18 +-
 docs/build/doctrees/environment.pickle |  Bin 10081 -> 14179 bytes
 docs/build/doctrees/index.doctree      |  Bin 412563 -> 708092 bytes
 docs/build/html/_sources/index.txt     |    6 +-
 docs/build/html/genindex.html          |  143 ++++-
 docs/build/html/index.html             | 1086 +++++++++++++++++++++++++++++++-
 docs/build/html/objects.inv            |  Bin 411 -> 561 bytes
 docs/build/html/searchindex.js         |    2 +-
 docs/source/index.rst                  |    6 +-
 python/README.md                       |   50 ++
 10 files changed, 1286 insertions(+), 25 deletions(-)
diff --git a/Pubnub.py b/Pubnub.py
index 9d927be..c30d1dd 100644
--- a/Pubnub.py
+++ b/Pubnub.py
@@ -775,7 +775,7 @@ class PubnubBase(object):
            Only works in async mode
 
         Args:
-            channel_group: Channel  group name ( string ) on which to publish message
+            channel_group: Channel group name ( string )
             callback: A callback method should be passed to the method.
                       If passed, the api works in async mode. 
                       Required argument when working with twisted or tornado .
@@ -1544,19 +1544,19 @@ class PubnubCoreAsync(PubnubBase):
 
     def subscribe_group(self, channel_groups, callback, error=None,
                   connect=None, disconnect=None, reconnect=None, sync=False):
-        """Subscribe to data on a channel.
+        """Subscribe to data on a channel group.
 
         This function causes the client to create an open TCP socket to the
         PubNub Real-Time Network and begin listening for messages on a specified channel.
-        To subscribe to a channel the client must send the appropriate subscribe_key at
+        To subscribe to a channel group the client must send the appropriate subscribe_key at
         initialization.
         
         Only works in async mode
 
         Args:
-            channel:    (string/list)
-                        Specifies the channel to subscribe to. It is possible to specify
-                        multiple channels as a comma separated list or andarray.
+            channel_groups:    (string/list)
+                        Specifies the channel groups to subscribe to. It is possible to specify
+                        multiple channel groups as a comma separated list or andarray.
 
             callback:   (function)
                         This callback is called on receiving a message from the channel.
@@ -1841,8 +1841,7 @@ class PubnubCoreAsync(PubnubBase):
            Only works in async mode
 
         Args:
-            channel: Channel name ( string ) on which to publish message
-
+            channel: Channel name ( string ) 
         """
         if channel in self.subscriptions is False:
             return False
@@ -1862,8 +1861,7 @@ class PubnubCoreAsync(PubnubBase):
            Only works in async mode
 
         Args:
-            channel_group: Channel group name ( string ) on which to publish message
-
+            channel_group: Channel group name ( string )
         """
         if channel_group in self.subscription_groups is False:
             return False
diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle
index eab7341..fa41cd8 100644
Binary files a/docs/build/doctrees/environment.pickle and b/docs/build/doctrees/environment.pickle differ
diff --git a/docs/build/doctrees/index.doctree b/docs/build/doctrees/index.doctree
index 2075527..fc17376 100644
Binary files a/docs/build/doctrees/index.doctree and b/docs/build/doctrees/index.doctree differ
diff --git a/docs/build/html/_sources/index.txt b/docs/build/html/_sources/index.txt
index af3593e..6b41e89 100644
--- a/docs/build/html/_sources/index.txt
+++ b/docs/build/html/_sources/index.txt
@@ -14,18 +14,18 @@ Welcome to PubNub's documentation!
 Pubnub
 ---------------------------------
 .. autoclass:: Pubnub
-   :members: publish, subscribe, unsubscribe, presence, history, here_now, grant, audit, revoke, get_origin, set_origin, get_auth_key, set_auth_key, encrypt, decrypt, time
+   :members: publish, subscribe, subscribe_group, unsubscribe, unsubscribe_group, presence, presence_group, history, here_now, grant, audit, revoke, get_origin, set_origin, get_auth_key, set_auth_key, encrypt, decrypt, time, channel_group_list_namespaces, channel_group_remove_namespace, channel_group_list_groups, channel_group_list_channels, channel_groups_add_channel, channel_group_remove_channel, channel_group_remove_group
 
 PubnubTwisted
 ---------------------------------
 .. autoclass:: PubnubTwisted
-   :members: publish, subscribe, unsubscribe, presence, history, here_now, grant, audit, revoke, get_origin, set_origin, get_auth_key, set_auth_key, encrypt, decrypt, time
+   :members: publish, subscribe, subscribe_group, unsubscribe, unsubscribe_group, presence, presence_group, history, here_now, grant, audit, revoke, get_origin, set_origin, get_auth_key, set_auth_key, encrypt, decrypt, time, channel_group_list_namespaces, channel_group_remove_namespace, channel_group_list_groups, channel_group_list_channels, channel_groups_add_channel, channel_group_remove_channel, channel_group_remove_group
 
 
 PubnubTornado
 ---------------------------------
 .. autoclass:: PubnubTornado
-   :members: publish, subscribe, unsubscribe, presence, history, here_now, grant, audit, revoke, get_origin, set_origin, get_auth_key, set_auth_key, encrypt, decrypt, time
+   :members: publish, subscribe, subscribe_group, unsubscribe, unsubscribe_group, presence, presence_group, history, here_now, grant, audit, revoke, get_origin, set_origin, get_auth_key, set_auth_key, encrypt, decrypt, time, channel_group_list_namespaces, channel_group_remove_namespace, channel_group_list_groups, channel_group_list_channels, channel_groups_add_channel, channel_group_remove_channel, channel_group_remove_group
 
 Indices and tables
 ==================
diff --git a/docs/build/html/genindex.html b/docs/build/html/genindex.html
index 80a0f59..54efb5d 100644
--- a/docs/build/html/genindex.html
+++ b/docs/build/html/genindex.html
@@ -50,6 +50,7 @@
 
 
  A
+ | 
C
  | 
D
  | 
E
  | 
G
@@ -81,6 +82,98 @@
   
 
 
+
C
+
+
 
D
 
 
 T
@@ -309,6 +432,22 @@
 
       
   
+  
+      
+  unsubscribe_group() (Pubnub.Pubnub method)
+  +
++
+        
+  (Pubnub.PubnubTornado method)
+  +
+        
+(Pubnub.PubnubTwisted method)
+  +
+ | 
 
 
 
diff --git a/docs/build/html/index.html b/docs/build/html/index.html
index 26bff5e..8d4e139 100644
--- a/docs/build/html/index.html
+++ b/docs/build/html/index.html
@@ -124,6 +124,298 @@ The dict returned contains values with keys ‘message’ and ‘pay
 
pubnub.audit (‘my_channel’);  # Sync Mode
 
 
+
+- 
+channel_group_list_channels(channel_group, callback=None, error=None)+
- Get list of channels for a group. +- Using this method, list of channels for a group, can be obtained. +- 
+- Args:+
- 
+- channel_group: (string) (optional) +
- Channel Group name. It can also contain namespace.
+If namespace is also specified, then the parameter
+will be in format namespace:channel_group+
- callback:   (optional)+
- A callback method should be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado.+
- error:      (optional)+
- Optional variable. An error method can be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado.+
 +
+- Returns:+
- Sync  Mode: dict
+channel_group_list_channels method returns a dict which contains list of channels
+in payload field
+{ +- 
+- u’status’: 200,
+u’payload’: {“channels”: [“hi”], “group”: “abcd”}, 
+u’service’: u’channel-registry’,
+u’error’: False 
 +- } +- Async Mode: None ( callback gets the response as parameter ) +- Response Format: +- The callback passed to channel_group_list_channels gets the a dict containing list of channels
+under payload field +- 
+- {+
- u’payload’: {“channels”: [“hi”], “group”: “abcd”}+
 +- } +
+ +
+
+
+- 
+channel_group_list_groups(namespace=None, callback=None, error=None)+
- Get list of groups. +- Using this method, list of groups for the subscribe key associated with PubNub
+object, can be obtained. If namespace is provided, groups within the namespace
+only are listed +- 
+- Args:+
- namespace:  (string) (optional) namespace
+callback:   (optional) +- 
+- A callback method should be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado . 
 +- 
+- error:      (optional)+
- Optional variable. An error method can be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado .+
 +
+- Returns:+
- Sync  Mode: dict
+channel_group_list_groups method returns a dict which contains list of groups
+in payload field
+{ +- 
+- u’status’: 200,
+u’payload’: {“namespace”: “dev”, “groups”: [“abcd”]}, 
+u’service’: u’channel-registry’,
+u’error’: False 
 +- } +- Async Mode: None ( callback gets the response as parameter ) +- Response Format: +- The callback passed to channel_group_list_namespaces gets the a dict containing list of groups
+under payload field +- 
+- {+
- u’payload’: {“namespace”: “dev”, “groups”: [“abcd”]}+
 +- } +
+ +
+
+
+- 
+channel_group_list_namespaces(callback=None, error=None)+
- Get list of namespaces. +- You can obtain list of namespaces for the subscribe key associated with PubNub
+object using this method. +- 
+- Args:+
- 
+- callback:   (optional)+
- A callback method should be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado.+
- error:      (optional)+
- Optional variable. An error method can be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado.+
 +
+- Returns:+
- Sync  Mode: dict
+channel_group_list_namespaces method returns a dict which contains list of namespaces
+in payload field
+{ +- 
+- u’status’: 200,
+u’payload’: { - 
+ - 
+- u’sub_key’: u’demo’,
+u’namespaces’: [u’dev’, u’foo’] 
 - 
+ - }, 
+u’service’: u’channel-registry’,
+u’error’: False - 
+ 
 +- } +- Async Mode: None (callback gets the response as parameter) +- Response Format: +- The callback passed to channel_group_list_namespaces gets the a dict containing list of namespaces
+under payload field +- 
+- {+
- 
+- u’payload’: {+
- u’sub_key’: u’demo’,
+u’namespaces’: [u’dev’, u’foo’]+
 +- } +
+ +- } +- namespaces is the list of namespaces for the given subscribe key +
+ +
+
+
+- 
+channel_group_remove_channel(channel_group, channel, callback=None, error=None)+
- Remove channel. +- A channel can be removed from a group method. +- 
+- Args:+
- 
+- channel_group:  (string)+
- Channel Group name. It can also contain namespace.
+If namespace is also specified, then the parameter
+will be in format namespace:channel_group+
- channel:        (string)+
- Can be a channel name, a list of channel names,
+or a comma separated list of channel names+
- callback:   (optional)+
- A callback method should be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado .+
- error:      (optional)+
- Optional variable. An error method can be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado .+
 +
+- Returns:+
- Sync  Mode: dict
+channel_group_remove_channel method returns a dict indicating status of the request +- 
+- {+
- u’status’: 200,
+u’message’: ‘OK’, 
+u’service’: u’channel-registry’,
+u’error’: False+
 +- } +- Async Mode: None ( callback gets the response as parameter ) +- Response Format: +- The callback passed to channel_group_remove_channel gets the a dict indicating status of the request +- 
+- {+
- u’status’: 200,
+u’message’: ‘OK’, 
+u’service’: u’channel-registry’,
+u’error’: False+
 +- } +
+ +
+
+
+- 
+channel_group_remove_group(channel_group, callback=None, error=None)+
- Remove channel group. +- A channel group can be removed using this method. +- 
+- Args:+
- 
+- channel_group:  (string)+
- Channel Group name. It can also contain namespace.
+If namespace is also specified, then the parameter
+will be in format namespace:channel_group+
- callback:   (optional)+
- A callback method should be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado.+
- error:      (optional)+
- Optional variable. An error method can be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado.+
 +
+- Returns:+
- Sync  Mode: dict
+channel_group_remove_group method returns a dict indicating status of the request +- 
+- {+
- u’status’: 200,
+u’message’: ‘OK’, 
+u’service’: u’channel-registry’,
+u’error’: False+
 +- } +- Async Mode: None ( callback gets the response as parameter ) +- Response Format: +- The callback passed to channel_group_remove_group gets the a dict indicating status of the request +- 
+- {+
- u’status’: 200,
+u’message’: ‘OK’, 
+u’service’: u’channel-registry’,
+u’error’: False+
 +- } +
+ +
+
+
+- 
+channel_group_remove_namespace(namespace, callback=None, error=None)+
- Remove a namespace. +- A namespace can be deleted using this method. +- 
+- Args:+
- namespace:  (string) namespace to be deleted
+callback:   (optional) +- 
+- A callback method should be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado . 
 +- 
+- error:      (optional)+
- Optional variable. An error method can be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado .+
 +
+- Returns:+
- Sync  Mode: dict
+channel_group_remove_namespace method returns a dict indicating status of the request +- 
+- {+
- u’status’: 200,
+u’message’: ‘OK’, 
+u’service’: u’channel-registry’,
+u’error’: False+
 +- } +- Async Mode: None ( callback gets the response as parameter ) +- Response Format: +- The callback passed to channel_group_list_namespaces gets the a dict indicating status of the request +- 
+- {+
- u’status’: 200,
+u’message’: ‘OK’, 
+u’service’: u’channel-registry’,
+u’error’: False+
 +- } +
+ +
+
 
 - 
 decrypt(message)@@ -359,6 +651,29 @@ Required argument when working with twisted or tornado .
 
 
 
 
+
+- 
+presence_group(channel_group, callback, error=None)+
- Subscribe to presence events on a channel group. +- 
+- Only works in async mode 
 +- 
+- Args:+
- channel_group: Channel group name ( string )
+callback: A callback method should be passed to the method. +- 
+- If passed, the api works in async mode. 
+Required argument when working with twisted or tornado . 
 +- 
+- error: Optional variable. An error method can be passed as parameter.+
- If passed, the api works in async mode.+
 +
+- Returns:+
- None+
 +
+
 - 
 publish(channel, message, callback=None, error=None)@@ -501,6 +816,38 @@ multiple channels as a comma separated list or andarray.
+
+- 
+subscribe_group(channel_groups, callback, error=None, connect=None, disconnect=None, reconnect=None, sync=False)+
- Subscribe to data on a channel group. +- This function causes the client to create an open TCP socket to the
+PubNub Real-Time Network and begin listening for messages on a specified channel.
+To subscribe to a channel group the client must send the appropriate subscribe_key at
+initialization. +- Only works in async mode +- 
+- Args:+
- 
+- channel_groups:    (string/list)+
- Specifies the channel groups to subscribe to. It is possible to specify
+multiple channel groups as a comma separated list or andarray.+
- callback:   (function)+
- This callback is called on receiving a message from the channel.+
- error:      (function) (optional)+
- This callback is called on an error event+
- connect:    (function) (optional)+
- This callback is called on a successful connection to the PubNub cloud+
- disconnect: (function) (optional)+
- This callback is called on client disconnect from the PubNub cloud+
- reconnect:  (function) (optional)+
- This callback is called on successfully re-connecting to the PubNub cloud+
 +
+- Returns:+
- None+
 +
+
 - 
 time(callback=None)@@ -532,7 +879,18 @@ Required argument when working with twisted or tornado .
- Unsubscribe from channel .
- Only works in async mode
- Args:-
- channel: Channel name ( string ) on which to publish message+
- channel: Channel name ( string )+
+
+
+
+- 
+unsubscribe_group(channel_group)+
- 
+- Unsubscribe from channel group.+
- Only works in async mode+
- Args:+
- channel_group: Channel group name ( string )
 
@@ -608,9 +966,301 @@ The dict returned contains values with keys ‘message’ and ‘pay}
 
 
-Usage:
-
-pubnub.audit (‘my_channel’);  # Sync Mode
+Usage:
+
+pubnub.audit (‘my_channel’);  # Sync Mode
+
+
+
+- 
+channel_group_list_channels(channel_group, callback=None, error=None)+
- Get list of channels for a group. +- Using this method, list of channels for a group, can be obtained. +- 
+- Args:+
- 
+- channel_group: (string) (optional) +
- Channel Group name. It can also contain namespace.
+If namespace is also specified, then the parameter
+will be in format namespace:channel_group+
- callback:   (optional)+
- A callback method should be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado.+
- error:      (optional)+
- Optional variable. An error method can be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado.+
 +
+- Returns:+
- Sync  Mode: dict
+channel_group_list_channels method returns a dict which contains list of channels
+in payload field
+{ +- 
+- u’status’: 200,
+u’payload’: {“channels”: [“hi”], “group”: “abcd”}, 
+u’service’: u’channel-registry’,
+u’error’: False 
 +- } +- Async Mode: None ( callback gets the response as parameter ) +- Response Format: +- The callback passed to channel_group_list_channels gets the a dict containing list of channels
+under payload field +- 
+- {+
- u’payload’: {“channels”: [“hi”], “group”: “abcd”}+
 +- } +
+ +
+
+
+- 
+channel_group_list_groups(namespace=None, callback=None, error=None)+
- Get list of groups. +- Using this method, list of groups for the subscribe key associated with PubNub
+object, can be obtained. If namespace is provided, groups within the namespace
+only are listed +- 
+- Args:+
- namespace:  (string) (optional) namespace
+callback:   (optional) +- 
+- A callback method should be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado . 
 +- 
+- error:      (optional)+
- Optional variable. An error method can be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado .+
 +
+- Returns:+
- Sync  Mode: dict
+channel_group_list_groups method returns a dict which contains list of groups
+in payload field
+{ +- 
+- u’status’: 200,
+u’payload’: {“namespace”: “dev”, “groups”: [“abcd”]}, 
+u’service’: u’channel-registry’,
+u’error’: False 
 +- } +- Async Mode: None ( callback gets the response as parameter ) +- Response Format: +- The callback passed to channel_group_list_namespaces gets the a dict containing list of groups
+under payload field +- 
+- {+
- u’payload’: {“namespace”: “dev”, “groups”: [“abcd”]}+
 +- } +
+ +
+
+
+- 
+channel_group_list_namespaces(callback=None, error=None)+
- Get list of namespaces. +- You can obtain list of namespaces for the subscribe key associated with PubNub
+object using this method. +- 
+- Args:+
- 
+- callback:   (optional)+
- A callback method should be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado.+
- error:      (optional)+
- Optional variable. An error method can be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado.+
 +
+- Returns:+
- Sync  Mode: dict
+channel_group_list_namespaces method returns a dict which contains list of namespaces
+in payload field
+{ +- 
+- u’status’: 200,
+u’payload’: { - 
+ - 
+- u’sub_key’: u’demo’,
+u’namespaces’: [u’dev’, u’foo’] 
 - 
+ - }, 
+u’service’: u’channel-registry’,
+u’error’: False - 
+ 
 +- } +- Async Mode: None (callback gets the response as parameter) +- Response Format: +- The callback passed to channel_group_list_namespaces gets the a dict containing list of namespaces
+under payload field +- 
+- {+
- 
+- u’payload’: {+
- u’sub_key’: u’demo’,
+u’namespaces’: [u’dev’, u’foo’]+
 +- } +
+ +- } +- namespaces is the list of namespaces for the given subscribe key +
+ +
+
+
+- 
+channel_group_remove_channel(channel_group, channel, callback=None, error=None)+
- Remove channel. +- A channel can be removed from a group method. +- 
+- Args:+
- 
+- channel_group:  (string)+
- Channel Group name. It can also contain namespace.
+If namespace is also specified, then the parameter
+will be in format namespace:channel_group+
- channel:        (string)+
- Can be a channel name, a list of channel names,
+or a comma separated list of channel names+
- callback:   (optional)+
- A callback method should be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado .+
- error:      (optional)+
- Optional variable. An error method can be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado .+
 +
+- Returns:+
- Sync  Mode: dict
+channel_group_remove_channel method returns a dict indicating status of the request +- 
+- {+
- u’status’: 200,
+u’message’: ‘OK’, 
+u’service’: u’channel-registry’,
+u’error’: False+
 +- } +- Async Mode: None ( callback gets the response as parameter ) +- Response Format: +- The callback passed to channel_group_remove_channel gets the a dict indicating status of the request +- 
+- {+
- u’status’: 200,
+u’message’: ‘OK’, 
+u’service’: u’channel-registry’,
+u’error’: False+
 +- } +
+ +
+
+
+- 
+channel_group_remove_group(channel_group, callback=None, error=None)+
- Remove channel group. +- A channel group can be removed using this method. +- 
+- Args:+
- 
+- channel_group:  (string)+
- Channel Group name. It can also contain namespace.
+If namespace is also specified, then the parameter
+will be in format namespace:channel_group+
- callback:   (optional)+
- A callback method should be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado.+
- error:      (optional)+
- Optional variable. An error method can be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado.+
 +
+- Returns:+
- Sync  Mode: dict
+channel_group_remove_group method returns a dict indicating status of the request +- 
+- {+
- u’status’: 200,
+u’message’: ‘OK’, 
+u’service’: u’channel-registry’,
+u’error’: False+
 +- } +- Async Mode: None ( callback gets the response as parameter ) +- Response Format: +- The callback passed to channel_group_remove_group gets the a dict indicating status of the request +- 
+- {+
- u’status’: 200,
+u’message’: ‘OK’, 
+u’service’: u’channel-registry’,
+u’error’: False+
 +- } +
+ +
+
+
+- 
+channel_group_remove_namespace(namespace, callback=None, error=None)+
- Remove a namespace. +- A namespace can be deleted using this method. +- 
+- Args:+
- namespace:  (string) namespace to be deleted
+callback:   (optional) +- 
+- A callback method should be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado . 
 +- 
+- error:      (optional)+
- Optional variable. An error method can be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado .+
 +
+- Returns:+
- Sync  Mode: dict
+channel_group_remove_namespace method returns a dict indicating status of the request +- 
+- {+
- u’status’: 200,
+u’message’: ‘OK’, 
+u’service’: u’channel-registry’,
+u’error’: False+
 +- } +- Async Mode: None ( callback gets the response as parameter ) +- Response Format: +- The callback passed to channel_group_list_namespaces gets the a dict indicating status of the request +- 
+- {+
- u’status’: 200,
+u’message’: ‘OK’, 
+u’service’: u’channel-registry’,
+u’error’: False+
 +- } +
+ 
@@ -848,6 +1498,29 @@ Required argument when working with twisted or tornado .
 
+
+- 
+presence_group(channel_group, callback, error=None)+
- Subscribe to presence events on a channel group. +- 
+- Only works in async mode 
 +- 
+- Args:+
- channel_group: Channel group name ( string )
+callback: A callback method should be passed to the method. +- 
+- If passed, the api works in async mode. 
+Required argument when working with twisted or tornado . 
 +- 
+- error: Optional variable. An error method can be passed as parameter.+
- If passed, the api works in async mode.+
 +
+- Returns:+
- None+
 +
+
 - 
 publish(channel, message, callback=None, error=None)@@ -990,6 +1663,38 @@ multiple channels as a comma separated list or andarray.
+
+- 
+subscribe_group(channel_groups, callback, error=None, connect=None, disconnect=None, reconnect=None, sync=False)+
- Subscribe to data on a channel group. +- This function causes the client to create an open TCP socket to the
+PubNub Real-Time Network and begin listening for messages on a specified channel.
+To subscribe to a channel group the client must send the appropriate subscribe_key at
+initialization. +- Only works in async mode +- 
+- Args:+
- 
+- channel_groups:    (string/list)+
- Specifies the channel groups to subscribe to. It is possible to specify
+multiple channel groups as a comma separated list or andarray.+
- callback:   (function)+
- This callback is called on receiving a message from the channel.+
- error:      (function) (optional)+
- This callback is called on an error event+
- connect:    (function) (optional)+
- This callback is called on a successful connection to the PubNub cloud+
- disconnect: (function) (optional)+
- This callback is called on client disconnect from the PubNub cloud+
- reconnect:  (function) (optional)+
- This callback is called on successfully re-connecting to the PubNub cloud+
 +
+- Returns:+
- None+
 +
+
 - 
 time(callback=None)@@ -1021,7 +1726,18 @@ Required argument when working with twisted or tornado .
- Unsubscribe from channel .
- Only works in async mode
- Args:-
- channel: Channel name ( string ) on which to publish message+
- channel: Channel name ( string )+
+
+
+
+- 
+unsubscribe_group(channel_group)+
- 
+- Unsubscribe from channel group.+
- Only works in async mode+
- Args:+
- channel_group: Channel group name ( string )
 
@@ -1102,6 +1818,298 @@ The dict returned contains values with keys ‘message’ and ‘paypubnub.audit (‘my_channel’);  # Sync Mode
 
 
+
+- 
+channel_group_list_channels(channel_group, callback=None, error=None)+
- Get list of channels for a group. +- Using this method, list of channels for a group, can be obtained. +- 
+- Args:+
- 
+- channel_group: (string) (optional) +
- Channel Group name. It can also contain namespace.
+If namespace is also specified, then the parameter
+will be in format namespace:channel_group+
- callback:   (optional)+
- A callback method should be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado.+
- error:      (optional)+
- Optional variable. An error method can be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado.+
 +
+- Returns:+
- Sync  Mode: dict
+channel_group_list_channels method returns a dict which contains list of channels
+in payload field
+{ +- 
+- u’status’: 200,
+u’payload’: {“channels”: [“hi”], “group”: “abcd”}, 
+u’service’: u’channel-registry’,
+u’error’: False 
 +- } +- Async Mode: None ( callback gets the response as parameter ) +- Response Format: +- The callback passed to channel_group_list_channels gets the a dict containing list of channels
+under payload field +- 
+- {+
- u’payload’: {“channels”: [“hi”], “group”: “abcd”}+
 +- } +
+ +
+
+
+- 
+channel_group_list_groups(namespace=None, callback=None, error=None)+
- Get list of groups. +- Using this method, list of groups for the subscribe key associated with PubNub
+object, can be obtained. If namespace is provided, groups within the namespace
+only are listed +- 
+- Args:+
- namespace:  (string) (optional) namespace
+callback:   (optional) +- 
+- A callback method should be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado . 
 +- 
+- error:      (optional)+
- Optional variable. An error method can be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado .+
 +
+- Returns:+
- Sync  Mode: dict
+channel_group_list_groups method returns a dict which contains list of groups
+in payload field
+{ +- 
+- u’status’: 200,
+u’payload’: {“namespace”: “dev”, “groups”: [“abcd”]}, 
+u’service’: u’channel-registry’,
+u’error’: False 
 +- } +- Async Mode: None ( callback gets the response as parameter ) +- Response Format: +- The callback passed to channel_group_list_namespaces gets the a dict containing list of groups
+under payload field +- 
+- {+
- u’payload’: {“namespace”: “dev”, “groups”: [“abcd”]}+
 +- } +
+ +
+
+
+- 
+channel_group_list_namespaces(callback=None, error=None)+
- Get list of namespaces. +- You can obtain list of namespaces for the subscribe key associated with PubNub
+object using this method. +- 
+- Args:+
- 
+- callback:   (optional)+
- A callback method should be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado.+
- error:      (optional)+
- Optional variable. An error method can be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado.+
 +
+- Returns:+
- Sync  Mode: dict
+channel_group_list_namespaces method returns a dict which contains list of namespaces
+in payload field
+{ +- 
+- u’status’: 200,
+u’payload’: { - 
+ - 
+- u’sub_key’: u’demo’,
+u’namespaces’: [u’dev’, u’foo’] 
 - 
+ - }, 
+u’service’: u’channel-registry’,
+u’error’: False - 
+ 
 +- } +- Async Mode: None (callback gets the response as parameter) +- Response Format: +- The callback passed to channel_group_list_namespaces gets the a dict containing list of namespaces
+under payload field +- 
+- {+
- 
+- u’payload’: {+
- u’sub_key’: u’demo’,
+u’namespaces’: [u’dev’, u’foo’]+
 +- } +
+ +- } +- namespaces is the list of namespaces for the given subscribe key +
+ +
+
+
+- 
+channel_group_remove_channel(channel_group, channel, callback=None, error=None)+
- Remove channel. +- A channel can be removed from a group method. +- 
+- Args:+
- 
+- channel_group:  (string)+
- Channel Group name. It can also contain namespace.
+If namespace is also specified, then the parameter
+will be in format namespace:channel_group+
- channel:        (string)+
- Can be a channel name, a list of channel names,
+or a comma separated list of channel names+
- callback:   (optional)+
- A callback method should be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado .+
- error:      (optional)+
- Optional variable. An error method can be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado .+
 +
+- Returns:+
- Sync  Mode: dict
+channel_group_remove_channel method returns a dict indicating status of the request +- 
+- {+
- u’status’: 200,
+u’message’: ‘OK’, 
+u’service’: u’channel-registry’,
+u’error’: False+
 +- } +- Async Mode: None ( callback gets the response as parameter ) +- Response Format: +- The callback passed to channel_group_remove_channel gets the a dict indicating status of the request +- 
+- {+
- u’status’: 200,
+u’message’: ‘OK’, 
+u’service’: u’channel-registry’,
+u’error’: False+
 +- } +
+ +
+
+
+- 
+channel_group_remove_group(channel_group, callback=None, error=None)+
- Remove channel group. +- A channel group can be removed using this method. +- 
+- Args:+
- 
+- channel_group:  (string)+
- Channel Group name. It can also contain namespace.
+If namespace is also specified, then the parameter
+will be in format namespace:channel_group+
- callback:   (optional)+
- A callback method should be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado.+
- error:      (optional)+
- Optional variable. An error method can be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado.+
 +
+- Returns:+
- Sync  Mode: dict
+channel_group_remove_group method returns a dict indicating status of the request +- 
+- {+
- u’status’: 200,
+u’message’: ‘OK’, 
+u’service’: u’channel-registry’,
+u’error’: False+
 +- } +- Async Mode: None ( callback gets the response as parameter ) +- Response Format: +- The callback passed to channel_group_remove_group gets the a dict indicating status of the request +- 
+- {+
- u’status’: 200,
+u’message’: ‘OK’, 
+u’service’: u’channel-registry’,
+u’error’: False+
 +- } +
+ +
+
+
+- 
+channel_group_remove_namespace(namespace, callback=None, error=None)+
- Remove a namespace. +- A namespace can be deleted using this method. +- 
+- Args:+
- namespace:  (string) namespace to be deleted
+callback:   (optional) +- 
+- A callback method should be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado . 
 +- 
+- error:      (optional)+
- Optional variable. An error method can be passed to the method.
+If set, the api works in async mode. 
+Required argument when working with twisted or tornado .+
 +
+- Returns:+
- Sync  Mode: dict
+channel_group_remove_namespace method returns a dict indicating status of the request +- 
+- {+
- u’status’: 200,
+u’message’: ‘OK’, 
+u’service’: u’channel-registry’,
+u’error’: False+
 +- } +- Async Mode: None ( callback gets the response as parameter ) +- Response Format: +- The callback passed to channel_group_list_namespaces gets the a dict indicating status of the request +- 
+- {+
- u’status’: 200,
+u’message’: ‘OK’, 
+u’service’: u’channel-registry’,
+u’error’: False+
 +- } +
+ +
+
 - 
 decrypt(message)@@ -1337,6 +2345,29 @@ Required argument when working with twisted or tornado .
+
+- 
+presence_group(channel_group, callback, error=None)+
- Subscribe to presence events on a channel group. +- 
+- Only works in async mode 
 +- 
+- Args:+
- channel_group: Channel group name ( string )
+callback: A callback method should be passed to the method. +- 
+- If passed, the api works in async mode. 
+Required argument when working with twisted or tornado . 
 +- 
+- error: Optional variable. An error method can be passed as parameter.+
- If passed, the api works in async mode.+
 +
+- Returns:+
- None+
 +
+
 - 
 publish(channel, message, callback=None, error=None)@@ -1479,6 +2510,38 @@ multiple channels as a comma separated list or andarray.
+
+- 
+subscribe_group(channel_groups, callback, error=None, connect=None, disconnect=None, reconnect=None, sync=False)+
- Subscribe to data on a channel group. +- This function causes the client to create an open TCP socket to the
+PubNub Real-Time Network and begin listening for messages on a specified channel.
+To subscribe to a channel group the client must send the appropriate subscribe_key at
+initialization. +- Only works in async mode +- 
+- Args:+
- 
+- channel_groups:    (string/list)+
- Specifies the channel groups to subscribe to. It is possible to specify
+multiple channel groups as a comma separated list or andarray.+
- callback:   (function)+
- This callback is called on receiving a message from the channel.+
- error:      (function) (optional)+
- This callback is called on an error event+
- connect:    (function) (optional)+
- This callback is called on a successful connection to the PubNub cloud+
- disconnect: (function) (optional)+
- This callback is called on client disconnect from the PubNub cloud+
- reconnect:  (function) (optional)+
- This callback is called on successfully re-connecting to the PubNub cloud+
 +
+- Returns:+
- None+
 +
+
 - 
 time(callback=None)@@ -1510,7 +2573,18 @@ Required argument when working with twisted or tornado .
- Unsubscribe from channel .
- Only works in async mode
- Args:-
- channel: Channel name ( string ) on which to publish message+
- channel: Channel name ( string )+
+
+
+
+- 
+unsubscribe_group(channel_group)+
- 
+- Unsubscribe from channel group.+
- Only works in async mode+
- Args:+
- channel_group: Channel group name ( string )
 
diff --git a/docs/build/html/objects.inv b/docs/build/html/objects.inv
index a3f471d..8959d68 100644
Binary files a/docs/build/html/objects.inv and b/docs/build/html/objects.inv differ
diff --git a/docs/build/html/searchindex.js b/docs/build/html/searchindex.js
index 4d83cb9..eec0fc8 100644
--- a/docs/build/html/searchindex.js
+++ b/docs/build/html/searchindex.js
@@ -1 +1 @@
-Search.setIndex({envversion:42,terms:{"23f34d3f4rq34r34rq23q":0,all:0,newest:0,my_rw_authkei:0,obtain:0,tcp:0,ssl_on:0,reconnect:0,ttl:0,follow:0,twist:0,simultan:0,callback:0,cipher:0,paramet:0,access:0,onli:0,group:0,uuid:0,zone:0,how:0,here_now:0,readabl:0,publish_kei:0,send:0,should:0,pub2:0,valid:0,dict:0,appli:0,input:0,sent:0,pubsub:0,real:0,applic:0,digit:0,"return":0,string:0,thei:0,transpar:0,fals:0,none:0,auth:0,ssl:0,mechan:0,now:0,requir:0,my_channel:0,reveal:0,daemon:0,name:0,specif:0,level:0,channel_group:0,revers:0,list:0,geograph:0,privileg:0,server:0,separ:0,provid:0,token:0,api:0,mode:0,contain:0,comma:0,remov:0,set:0,specifi:0,permiss:0,my_admin_authkei:0,multipl:0,sync:0,my_ro_authkei:0,sampl:0,result:0,pass:0,pres_uuid:0,successfulli:0,event:0,special:0,page:0,variabl:0,index:0,what:0,oldest:0,network:0,channel:0,subscribe_kei:0,"while":0,publish:0,cipher_kei:0,current:0,method:0,state:0,pool:0,enncrypt:0,"new":0,get:0,across:0,attribut:0,object:0,kei:0,gener:0,each:0,usag:0,here:0,plaintext:0,base:0,async:0,locat:0,my_authkei:0,secret_kei:0,valu:0,care:0,both:0,about:0,output:0,socket:0,success:0,through:0,manag:0,precis:0,"123123234t234f34fq3dq":0,auth_kei:0,my_subkei:0,com:0,first:0,origin:0,arg:0,simpli:0,directli:0,revok:0,slice:0,transit:0,number:0,unix:0,"boolean":0,uniqu:0,ensur:0,total:0,storag:0,your:0,cloud:0,min:0,given:0,from:0,associ:0,doubl:0,three:0,messag:0,avail:0,start:0,call:0,includ:0,subscrib:0,taken:0,unsubscrib:0,store:0,listen:0,"function":0,option:0,presenc:0,search:0,andarrai:0,ani:0,line:0,"true":0,must:0,count:0,replic:0,ciphertext:0,retriev:0,possibl:0,"default":0,servic:0,work:0,histor:0,histori:0,below:0,limit:0,can:0,behavior:0,error:0,minut:0,initi:0,fetch:0,connect:0,control:0,payload:0,exampl:0,creat:0,"int":0,dure:0,respons:0,decrypt:0,argument:0,pub3:0,"case":0,pub1:0,exist:0,pub5:0,pub4:0,need:0,w34tcw45t45tcw435tww3:0,"null":0,sever:0,occup:0,end:0,open:0,grant:0,receiv:0,format:0,when:0,write:0,also:0,epoch:0,playback:0,take:0,which:0,indefinit:0,you:0,unlimit:0,singl:0,begin:0,thi:0,tornado:0,max:0,previou:0,"143r34f34t34fq34q34q3":0,statu:0,disconnect:0,abc:0,user:0,establish:0,eavesdropp:0,encrypt:0,data:0,"class":0,demonstr:0,audit:0,appropri:0,center:0,read:0,secur:0,quantiti:0,caus:0,inform:0,client:0,combin:0,potenti:0,time:0,pam:0,azur:0,order:0},objtypes:{"0":"py:module","1":"py:method","2":"py:class"},objnames:{"0":["py","module","Python module"],"1":["py","method","Python method"],"2":["py","class","Python class"]},filenames:["index"],titles:["Welcome to PubNub’s documentation!"],objects:{"":{Pubnub:[0,0,0,"-"]},"Pubnub.PubnubTornado":{audit:[0,1,1,""],revoke:[0,1,1,""],grant:[0,1,1,""],here_now:[0,1,1,""],decrypt:[0,1,1,""],publish:[0,1,1,""],presence:[0,1,1,""],subscribe:[0,1,1,""],unsubscribe:[0,1,1,""],time:[0,1,1,""],encrypt:[0,1,1,""],history:[0,1,1,""]},"Pubnub.PubnubTwisted":{audit:[0,1,1,""],revoke:[0,1,1,""],grant:[0,1,1,""],here_now:[0,1,1,""],presence:[0,1,1,""],decrypt:[0,1,1,""],publish:[0,1,1,""],subscribe:[0,1,1,""],unsubscribe:[0,1,1,""],time:[0,1,1,""],encrypt:[0,1,1,""],history:[0,1,1,""]},Pubnub:{PubnubTornado:[0,2,1,""],Pubnub:[0,2,1,""],PubnubTwisted:[0,2,1,""]},"Pubnub.Pubnub":{audit:[0,1,1,""],revoke:[0,1,1,""],here_now:[0,1,1,""],grant:[0,1,1,""],decrypt:[0,1,1,""],publish:[0,1,1,""],presence:[0,1,1,""],subscribe:[0,1,1,""],unsubscribe:[0,1,1,""],time:[0,1,1,""],encrypt:[0,1,1,""],history:[0,1,1,""]}},titleterms:{welcom:0,pubnub:0,indic:0,pubnubtwist:0,tabl:0,pubnubtornado:0,document:0}})
\ No newline at end of file
+Search.setIndex({envversion:42,terms:{"23f34d3f4rq34r34rq23q":0,all:0,newest:0,my_rw_authkei:0,thi:0,channel_group_list_group:0,obtain:0,tcp:0,output:0,ssl_on:0,reconnect:0,ttl:0,follow:0,twist:0,simultan:0,callback:0,cipher:0,paramet:0,begin:0,access:0,onli:0,group:0,uuid:0,channel_group_list_channel:0,field:0,here_now:0,readabl:0,publish_kei:0,send:0,should:0,pub2:0,valid:0,dict:0,under:0,input:0,must:0,sent:0,pubsub:0,real:0,applic:0,digit:0,"return":0,string:0,thei:0,get:0,fals:0,none:0,auth:0,sub_kei:0,ssl:0,mechan:0,now:0,requir:0,my_channel:0,reveal:0,daemon:0,name:0,specif:0,level:0,channel_group:0,revers:0,list:0,geograph:0,privileg:0,server:0,separ:0,provid:0,token:0,api:0,mode:0,contain:0,comma:0,manag:0,set:0,specifi:0,permiss:0,my_admin_authkei:0,multipl:0,sync:0,my_ro_authkei:0,sampl:0,result:0,pass:0,pres_uuid:0,successfulli:0,servic:0,special:0,variabl:0,index:0,statu:0,oldest:0,network:0,channel:0,subscribe_kei:0,"while":0,publish:0,cipher_kei:0,current:0,delet:0,state:0,pool:0,enncrypt:0,"new":0,channel_group_remove_namespac:0,foo:0,across:0,attribut:0,object:0,kei:0,gener:0,each:0,usag:0,here:0,plaintext:0,base:0,async:0,locat:0,method:0,secret_kei:0,valu:0,care:0,both:0,about:0,your:0,slice:0,min:0,success:0,through:0,page:0,precis:0,"123123234t234f34fq3dq":0,auth_kei:0,my_subkei:0,com:0,first:0,origin:0,abcd:0,arg:0,simpli:0,directli:0,revok:0,appli:0,transit:0,within:0,number:0,channel_group_remove_group:0,unix:0,"boolean":0,uniqu:0,ensur:0,total:0,storag:0,my_authkei:0,cloud:0,channel_group_remove_channel:0,given:0,from:0,associ:0,doubl:0,three:0,messag:0,avail:0,start:0,call:0,includ:0,subscrib:0,taken:0,unsubscrib:0,store:0,listen:0,"function":0,option:0,namespac:0,presenc:0,search:0,andarrai:0,ani:0,line:0,"true":0,socket:0,count:0,replic:0,ciphertext:0,retriev:0,possibl:0,"default":0,remov:0,work:0,histor:0,dev:0,histori:0,below:0,limit:0,can:0,behavior:0,error:0,minut:0,initi:0,fetch:0,connect:0,control:0,payload:0,exampl:0,creat:0,"int":0,demo:0,dure:0,respons:0,decrypt:0,argument:0,pub3:0,"case":0,pub1:0,exist:0,pub5:0,pub4:0,need:0,w34tcw45t45tcw435tww3:0,"null":0,sever:0,occup:0,end:0,open:0,secur:0,receiv:0,transpar:0,when:0,event:0,write:0,how:0,epoch:0,playback:0,read:0,take:0,which:0,indefinit:0,you:0,zone:0,channel_group_list_namespac:0,unlimit:0,singl:0,unsubscribe_group:0,registri:0,tornado:0,max:0,previou:0,"143r34f34t34fq34q34q3":0,what:0,disconnect:0,presence_group:0,abc:0,user:0,establish:0,eavesdropp:0,encrypt:0,subscribe_group:0,data:0,"class":0,demonstr:0,audit:0,appropri:0,center:0,also:0,grant:0,request:0,quantiti:0,caus:0,inform:0,client:0,combin:0,potenti:0,time:0,format:0,pam:0,azur:0,order:0},objtypes:{"0":"py:module","1":"py:method","2":"py:class"},objnames:{"0":["py","module","Python module"],"1":["py","method","Python method"],"2":["py","class","Python class"]},filenames:["index"],titles:["Welcome to PubNub’s documentation!"],objects:{"":{Pubnub:[0,0,0,"-"]},"Pubnub.PubnubTornado":{channel_group_remove_channel:[0,1,1,""],audit:[0,1,1,""],unsubscribe_group:[0,1,1,""],revoke:[0,1,1,""],here_now:[0,1,1,""],grant:[0,1,1,""],decrypt:[0,1,1,""],presence_group:[0,1,1,""],publish:[0,1,1,""],presence:[0,1,1,""],subscribe:[0,1,1,""],unsubscribe:[0,1,1,""],channel_group_remove_group:[0,1,1,""],channel_group_list_groups:[0,1,1,""],time:[0,1,1,""],channel_group_remove_namespace:[0,1,1,""],encrypt:[0,1,1,""],subscribe_group:[0,1,1,""],channel_group_list_channels:[0,1,1,""],channel_group_list_namespaces:[0,1,1,""],history:[0,1,1,""]},"Pubnub.PubnubTwisted":{channel_group_remove_channel:[0,1,1,""],audit:[0,1,1,""],unsubscribe_group:[0,1,1,""],revoke:[0,1,1,""],grant:[0,1,1,""],presence:[0,1,1,""],here_now:[0,1,1,""],decrypt:[0,1,1,""],presence_group:[0,1,1,""],channel_group_remove_group:[0,1,1,""],subscribe:[0,1,1,""],unsubscribe:[0,1,1,""],publish:[0,1,1,""],channel_group_list_groups:[0,1,1,""],time:[0,1,1,""],channel_group_remove_namespace:[0,1,1,""],encrypt:[0,1,1,""],subscribe_group:[0,1,1,""],channel_group_list_channels:[0,1,1,""],channel_group_list_namespaces:[0,1,1,""],history:[0,1,1,""]},Pubnub:{PubnubTornado:[0,2,1,""],Pubnub:[0,2,1,""],PubnubTwisted:[0,2,1,""]},"Pubnub.Pubnub":{channel_group_remove_channel:[0,1,1,""],audit:[0,1,1,""],unsubscribe_group:[0,1,1,""],revoke:[0,1,1,""],here_now:[0,1,1,""],presence:[0,1,1,""],grant:[0,1,1,""],decrypt:[0,1,1,""],presence_group:[0,1,1,""],channel_group_remove_namespace:[0,1,1,""],channel_group_remove_group:[0,1,1,""],subscribe:[0,1,1,""],unsubscribe:[0,1,1,""],publish:[0,1,1,""],channel_group_list_groups:[0,1,1,""],time:[0,1,1,""],encrypt:[0,1,1,""],subscribe_group:[0,1,1,""],channel_group_list_channels:[0,1,1,""],channel_group_list_namespaces:[0,1,1,""],history:[0,1,1,""]}},titleterms:{welcom:0,pubnub:0,indic:0,pubnubtwist:0,tabl:0,pubnubtornado:0,document:0}})
\ No newline at end of file
diff --git a/docs/source/index.rst b/docs/source/index.rst
index af3593e..6b41e89 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -14,18 +14,18 @@ Welcome to PubNub's documentation!
 Pubnub
 ---------------------------------
 .. autoclass:: Pubnub
-   :members: publish, subscribe, unsubscribe, presence, history, here_now, grant, audit, revoke, get_origin, set_origin, get_auth_key, set_auth_key, encrypt, decrypt, time
+   :members: publish, subscribe, subscribe_group, unsubscribe, unsubscribe_group, presence, presence_group, history, here_now, grant, audit, revoke, get_origin, set_origin, get_auth_key, set_auth_key, encrypt, decrypt, time, channel_group_list_namespaces, channel_group_remove_namespace, channel_group_list_groups, channel_group_list_channels, channel_groups_add_channel, channel_group_remove_channel, channel_group_remove_group
 
 PubnubTwisted
 ---------------------------------
 .. autoclass:: PubnubTwisted
-   :members: publish, subscribe, unsubscribe, presence, history, here_now, grant, audit, revoke, get_origin, set_origin, get_auth_key, set_auth_key, encrypt, decrypt, time
+   :members: publish, subscribe, subscribe_group, unsubscribe, unsubscribe_group, presence, presence_group, history, here_now, grant, audit, revoke, get_origin, set_origin, get_auth_key, set_auth_key, encrypt, decrypt, time, channel_group_list_namespaces, channel_group_remove_namespace, channel_group_list_groups, channel_group_list_channels, channel_groups_add_channel, channel_group_remove_channel, channel_group_remove_group
 
 
 PubnubTornado
 ---------------------------------
 .. autoclass:: PubnubTornado
-   :members: publish, subscribe, unsubscribe, presence, history, here_now, grant, audit, revoke, get_origin, set_origin, get_auth_key, set_auth_key, encrypt, decrypt, time
+   :members: publish, subscribe, subscribe_group, unsubscribe, unsubscribe_group, presence, presence_group, history, here_now, grant, audit, revoke, get_origin, set_origin, get_auth_key, set_auth_key, encrypt, decrypt, time, channel_group_list_namespaces, channel_group_remove_namespace, channel_group_list_groups, channel_group_list_channels, channel_groups_add_channel, channel_group_remove_channel, channel_group_remove_group
 
 Indices and tables
 ==================
diff --git a/python/README.md b/python/README.md
index e9084e2..0ce3455 100644
--- a/python/README.md
+++ b/python/README.md
@@ -60,6 +60,37 @@ pubnub.subscribe(channel, callback=callback, error=callback,
                  connect=connect, reconnect=reconnect, disconnect=disconnect)
 ```
 
+#### SUBSCRIBE to group
+
+```
+# Listen for Messages
+
+channel_group = 'group1'
+
+def callback(message, channel_group, channel):
+    print(message)
+
+
+def error(message):
+    print("ERROR : " + str(message))
+
+
+def connect(message):
+    print("CONNECTED")
+
+
+def reconnect(message):
+    print("RECONNECTED")
+
+
+def disconnect(message):
+    print("DISCONNECTED")
+
+
+pubnub.subscribe_group(channel_group, callback=callback, error=callback,
+                 connect=connect, reconnect=reconnect, disconnect=disconnect)
+```
+
 #### SUBSCRIBE Synchronous ( compatible with pre-3.5 )
 Runs in tight loop if callback return True.
 Loop ends when callback return False
@@ -106,6 +137,25 @@ def error(message):
 pubnub.presence(channel, callback=callback, error=callback)
 ```
 
+#### PRESENCE channel group
+
+```
+# Listen for Presence Event Messages
+
+channel_group = 'group1'
+
+def callback(message, channel_group, channel):
+    print(message)
+
+
+def error(message):
+    print("ERROR : " + str(message))
+
+
+
+pubnub.presence_group(channel_group, callback=callback, error=callback)
+```
+
 #### HERE_NOW
 
 ```
-- 
cgit v1.2.3