Skip to content

Commit

Permalink
version bump and readme fix
Browse files Browse the repository at this point in the history
rename to historic to match endpoint name
  • Loading branch information
liampauling committed Nov 13, 2017
1 parent af9d764 commit ef92cb7
Show file tree
Hide file tree
Showing 7 changed files with 36 additions and 37 deletions.
13 changes: 6 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ The library can then be used as follows:

Following endpoints are available:

```python
>>> trading.[login](http://docs.developer.betfair.com/docs/pages/viewpage.action?pageId=3834909#Login&SessionManagement-Login)
>>> trading.[keep_alive](http://docs.developer.betfair.com/docs/pages/viewpage.action?pageId=3834909#Login&SessionManagement-KeepAlive)
>>> trading.[logout](http://docs.developer.betfair.com/docs/pages/viewpage.action?pageId=3834909#Login&SessionManagement-Logout)
Expand All @@ -58,7 +57,6 @@ Following endpoints are available:
>>> trading.in_play_service
>>> trading.race_card
```

# streaming
Expand Down Expand Up @@ -94,25 +92,26 @@ In development so breaking changes likely.
market_filter=market_filter,
market_data_filter=market_data_filter,
)

>>> betfair_socket.start(async=False)
```

# historical data
# historic data

The historical endpoint provides some basic abstraction for the historicaldata api:
The historic endpoint provides some basic abstraction for the historicdata api:

[Historical Data API](https://historicdata.betfair.com/#/apidocs)
[Historic Data API](https://historicdata.betfair.com/#/apidocs)

```python

>>> trading.historical.get_my_data()
>>> trading.historic.get_my_data()

[{'plan': 'Basic Plan', 'purchaseItemId': 1343, 'sport': 'Cricket', 'forDate': '2017-06-01T00:00:00'}]
```

Taking advantage of the streaming code lightweight can parse/output historical data in the same way it process streaming data allowing backtesting or with a custom listener, csv creation (see [examples](https://github.com/liampauling/betfair/tree/master/examples)).

[Historical Data](https://historicdata.betfair.com/#/home)
[Historic Data](https://historicdata.betfair.com/#/home)

In development so breaking changes likely.

Expand Down
2 changes: 1 addition & 1 deletion betfairlightweight/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from . import filters

__title__ = 'betfairlightweight'
__version__ = '1.5.6'
__version__ = '1.5.7'
__author__ = 'Liam Pauling'

# Set default logging handler to avoid "No handler found" warnings.
Expand Down
2 changes: 1 addition & 1 deletion betfairlightweight/apiclient.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ def __init__(self, username, password=None, app_key=None, certs=None, locale=Non
self.streaming = endpoints.Streaming(self)
self.in_play_service = endpoints.InPlayService(self)
self.race_card = endpoints.RaceCard(self)
self.historical = endpoints.Historical(self)
self.historic = endpoints.Historic(self)

def __repr__(self):
return '<APIClient [%s]>' % self.username
Expand Down
2 changes: 1 addition & 1 deletion betfairlightweight/endpoints/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@
from .inplayservice import InPlayService
from .streaming import Streaming
from .racecard import RaceCard
from .historical import Historical
from .historic import Historic
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
requests.models.json = json


class Historical(BaseEndpoint):
class Historic(BaseEndpoint):

def get_my_data(self, session=None):
"""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import betfairlightweight

"""
historic is the API endpoint that can be used to
Historic is the API endpoint that can be used to
download data betfair provide.
https://historicdata.betfair.com/#/apidocs
Expand All @@ -19,26 +19,26 @@
trading.login()

# get my data
my_data = trading.historical.get_my_data()
my_data = trading.historic.get_my_data()
for i in my_data:
print(i)

# get collection options (allows filtering)
collection_options = trading.historical.get_collection_options("Horse Racing", "Basic Plan", 1, 3, 2017, 1, 3, 2017)
collection_options = trading.historic.get_collection_options("Horse Racing", "Basic Plan", 1, 3, 2017, 1, 3, 2017)
print(collection_options)

# get advance basket data size
basket_size = trading.historical.get_data_size("Horse Racing", "Basic Plan", 1, 3, 2017, 1, 3, 2017)
basket_size = trading.historic.get_data_size("Horse Racing", "Basic Plan", 1, 3, 2017, 1, 3, 2017)
print(basket_size)

# get file list
file_list = trading.historical.get_file_list(
file_list = trading.historic.get_file_list(
"Horse Racing", "Basic Plan", 1, 3, 2017, 31, 3, 2017, market_types_collection=['WIN', 'PLACE'],
countries_collection=['GB', 'IE'], file_type_collection=['M'])
print(file_list)

# download the files
for file in file_list:
print(file)
download = trading.historical.download_file(file_path=file)
download = trading.historic.download_file(file_path=file)
print(download)
40 changes: 20 additions & 20 deletions tests/unit/test_historical.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,27 +4,27 @@

from betfairlightweight.compat import json
from betfairlightweight import APIClient
from betfairlightweight.endpoints.historical import Historical
from betfairlightweight.endpoints.historic import Historic
from betfairlightweight.exceptions import APIError, InvalidResponse


class HistoricalTest(unittest.TestCase):

def setUp(self):
self.client = APIClient('username', 'password', 'app_key', 'UK')
self.historical = Historical(self.client)
self.historic = Historic(self.client)

def test_init(self):
assert self.historical.client == self.client
assert self.historic.client == self.client

@mock.patch('betfairlightweight.endpoints.historical.Historical.request', return_value=(mock.Mock(), 1.3))
@mock.patch('betfairlightweight.endpoints.historic.Historic.request', return_value=(mock.Mock(), 1.3))
def test_get_my_data(self, mock_request):
self.historical.get_my_data()
self.historic.get_my_data()

mock_request.assert_called_with('GetMyData', {}, None)
assert mock_request.call_count == 1

@mock.patch('betfairlightweight.endpoints.historical.Historical.request', return_value=(mock.Mock(), 1.3))
@mock.patch('betfairlightweight.endpoints.historic.Historic.request', return_value=(mock.Mock(), 1.3))
def test_get_collection_options(self, mock_request):
params = {
'sport': 1,
Expand All @@ -36,12 +36,12 @@ def test_get_collection_options(self, mock_request):
'toMonth': 7,
'toYear': 8,
}
self.historical.get_collection_options(1, 2, 3, 4, 5, 6, 7, 8)
self.historic.get_collection_options(1, 2, 3, 4, 5, 6, 7, 8)

mock_request.assert_called_with('GetCollectionOptions', params, None)
assert mock_request.call_count == 1

@mock.patch('betfairlightweight.endpoints.historical.Historical.request', return_value=(mock.Mock(), 1.3))
@mock.patch('betfairlightweight.endpoints.historic.Historic.request', return_value=(mock.Mock(), 1.3))
def test_get_data_size(self, mock_request):
params = {
'sport': 1,
Expand All @@ -53,12 +53,12 @@ def test_get_data_size(self, mock_request):
'toMonth': 7,
'toYear': 8,
}
self.historical.get_data_size(1, 2, 3, 4, 5, 6, 7, 8)
self.historic.get_data_size(1, 2, 3, 4, 5, 6, 7, 8)

mock_request.assert_called_with('GetAdvBasketDataSize', params, None)
assert mock_request.call_count == 1

@mock.patch('betfairlightweight.endpoints.historical.Historical.request', return_value=(mock.Mock(), 1.3))
@mock.patch('betfairlightweight.endpoints.historic.Historic.request', return_value=(mock.Mock(), 1.3))
def test_get_file_list(self, mock_request):
params = {
'sport': 1,
Expand All @@ -70,44 +70,44 @@ def test_get_file_list(self, mock_request):
'toMonth': 7,
'toYear': 8,
}
self.historical.get_file_list(1, 2, 3, 4, 5, 6, 7, 8)
self.historic.get_file_list(1, 2, 3, 4, 5, 6, 7, 8)

mock_request.assert_called_with('DownloadListOfFiles', params, None)
assert mock_request.call_count == 1

# def test_download_file(self):
# pass

@mock.patch('betfairlightweight.endpoints.historical.check_status_code')
@mock.patch('betfairlightweight.endpoints.historical.Historical.headers')
@mock.patch('betfairlightweight.endpoints.historic.check_status_code')
@mock.patch('betfairlightweight.endpoints.historic.Historic.headers')
@mock.patch('betfairlightweight.baseclient.requests.post')
def test_request(self, mock_post, mock_headers, mock_check_status_code):
params = {'test': 'me'}
method = 'test'
url = 'https://historicdata.betfair.com/api/test'

self.historical.request(method=method, params=params, session=None)
self.historic.request(method=method, params=params, session=None)

mock_post.assert_called_with(
url, headers=mock_headers, data=json.dumps(params),
timeout=(self.historical.connect_timeout, self.historical.read_timeout)
timeout=(self.historic.connect_timeout, self.historic.read_timeout)
)
assert mock_post.call_count == 1
assert mock_check_status_code.call_count == 1

@mock.patch('betfairlightweight.endpoints.historical.Historical.headers')
@mock.patch('betfairlightweight.endpoints.historic.Historic.headers')
@mock.patch('betfairlightweight.baseclient.requests.post')
def test_request_error(self, mock_post, mock_headers):
params = {'test': 'me'}
method = 'test'
url = 'https://historicdata.betfair.com/api/test'
mock_post.side_effect = ConnectionError()
with self.assertRaises(APIError):
self.historical.request(params=params, method=method, session=None)
self.historic.request(params=params, method=method, session=None)

mock_post.side_effect = ValueError()
with self.assertRaises(APIError):
self.historical.request(params=params, method=method, session=None)
self.historic.request(params=params, method=method, session=None)

# @mock.patch('betfairlightweight.endpoints.historical.check_status_code')
# @mock.patch('betfairlightweight.endpoints.historical.Historical.headers')
Expand All @@ -125,10 +125,10 @@ def test_request_error(self, mock_post, mock_headers):
# self.historical.request(params=params, method=method, session=None)

def test_headers(self):
assert self.historical.headers == {
assert self.historic.headers == {
'ssoid': self.client.session_token,
'Content-Type': 'application/json'
}

def test_url(self):
assert self.historical.url == 'https://historicdata.betfair.com/api/'
assert self.historic.url == 'https://historicdata.betfair.com/api/'

0 comments on commit ef92cb7

Please sign in to comment.