Skip to content

Commit a5bd029

Browse files
committed
[EN-1570] handler docstrings
1 parent a1f322a commit a5bd029

File tree

2 files changed

+71
-6
lines changed

2 files changed

+71
-6
lines changed

docs/api.rst

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ API
1414
:members:
1515
:inherited-members:
1616

17+
.. automodule:: dxfeed.core.utils.handler
18+
:members:
19+
:inherited-members:
20+
1721
Low-level API
1822
-----------------------
1923

@@ -28,5 +32,3 @@ Utils functions
2832
:members:
2933
:inherited-members:
3034

31-
.. automodule:: dxfeed.core.utils.data_class
32-
:members:

dxfeed/core/utils/handler.pyx

Lines changed: 67 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,31 +4,94 @@ import pandas as pd
44

55

66
cdef class EventHandler:
7-
# TODO: docs
7+
"""
8+
Master class for user defined event handlers. `update` method should be considered as abstract.
9+
10+
Attributes
11+
----------
12+
columns: list
13+
After attaching listener the field contains one-word descriptors of the values in upcoming event the order
14+
coincides
15+
"""
816
def __init__(self):
917
self.columns = list()
1018

1119
cdef void __update(self, event) nogil:
1220
with gil:
1321
self.update(event)
1422

15-
def update(self, event):
23+
def update(self, event: list):
24+
"""
25+
Method that is called, when event arrives to related Subscription. Currently (Cython version 0.29.17),
26+
abstract methods are not implemented, so this implementation is sort of stub method.
27+
28+
Parameters
29+
----------
30+
event: list
31+
List of various data specific to certain event type
32+
"""
1633
warn(Warning('You have not implemented update method in your EventHandler, that is called, when event comes!'))
1734

1835
cdef class DefaultHandler(EventHandler):
19-
# TODO: docs
36+
"""
37+
The class implements one possible event handler, which is considered as default. This class just stores upcoming
38+
events in deque and has methods to get data as list or as pandas.DataFrame.
39+
40+
Attributes
41+
----------
42+
data_len: int
43+
The length of internal collections.deque object. Default is 100000.
44+
columns: list
45+
After attaching listener the field contains one-word descriptors of the values in upcoming event the order
46+
coincides.
47+
"""
2048
def __init__(self, data_len: int=100000):
2149
self.__data = deque(maxlen=data_len)
2250

23-
def update(self, event):
51+
def update(self, event: list):
52+
"""
53+
Utility method that is called by underlying Cython level when new event is received. Sores events in
54+
collection.deque.
55+
56+
Parameters
57+
----------
58+
event: list
59+
List of various data specific to certain event type.
60+
"""
2461
self.__data.append(event)
2562

2663
def get_list(self):
64+
"""
65+
Method to get data stored in collections.deque as list.
66+
67+
Returns
68+
-------
69+
data: list
70+
List of received events.
71+
"""
2772
data = self.__data.copy()
2873
self.__data.clear()
2974
return list(data)
3075

3176
def get_dataframe(self, keep: bool=True):
77+
"""
78+
Returns received data as pandas.DataFrame object.
79+
80+
Warning
81+
-------
82+
There are no restriction on attaching one event handler to several subscriptions. In this case, method will
83+
work correctly if different subscriptions have same event type. Otherwise error will occur.
84+
85+
Parameters
86+
----------
87+
keep: bool
88+
When False clears internal collections.deque object after call. Default True.
89+
90+
Returns
91+
-------
92+
df: pandas.DataFrame
93+
Dataframe with received events.
94+
"""
3295
df_data = self.__data.copy()
3396
if not keep:
3497
self.__data.clear()

0 commit comments

Comments
 (0)