Skip to content

Commit

Permalink
Using Black (#8)
Browse files Browse the repository at this point in the history
* black configuration

* black formatted
  • Loading branch information
exxamalte committed Jun 7, 2021
1 parent fa6bf17 commit 5ea3edc
Show file tree
Hide file tree
Showing 5 changed files with 75 additions and 58 deletions.
6 changes: 6 additions & 0 deletions .pre-commit-config.yaml
@@ -0,0 +1,6 @@
repos:
- repo: https://github.com/psf/black
rev: 20.8b1
hooks:
- id: black
language_version: python3
49 changes: 30 additions & 19 deletions georss_qld_bushfire_alert_client/__init__.py
Expand Up @@ -7,53 +7,64 @@
from georss_client.consts import CUSTOM_ATTRIBUTE
from georss_client.feed_manager import FeedManagerBase

REGEXP_ATTR_STATUS = 'Current Status: (?P<{}>[^<]+)[\n\r]'\
.format(CUSTOM_ATTRIBUTE)
REGEXP_ATTR_STATUS = "Current Status: (?P<{}>[^<]+)[\n\r]".format(CUSTOM_ATTRIBUTE)

URL = "https://www.qfes.qld.gov.au/data/alerts/bushfireAlert.xml"

VALID_CATEGORIES = ['Emergency Warning', 'Watch and Act', 'Advice',
'Notification', 'Information']
VALID_CATEGORIES = [
"Emergency Warning",
"Watch and Act",
"Advice",
"Notification",
"Information",
]


class QldBushfireAlertFeedManager(FeedManagerBase):
"""Feed Manager for Qld Bushfire Alert feed."""

def __init__(self, generate_callback, update_callback, remove_callback,
coordinates, filter_radius=None,
filter_categories=None):
def __init__(
self,
generate_callback,
update_callback,
remove_callback,
coordinates,
filter_radius=None,
filter_categories=None,
):
"""Initialize the Qld Bushfire Alert Feed Manager."""
feed = QldBushfireAlertFeed(
coordinates,
filter_radius=filter_radius,
filter_categories=filter_categories)
super().__init__(feed, generate_callback, update_callback,
remove_callback)
filter_categories=filter_categories,
)
super().__init__(feed, generate_callback, update_callback, remove_callback)


class QldBushfireAlertFeed(GeoRssFeed):
"""Qld Bushfire Alert feed."""

def __init__(self, home_coordinates, filter_radius=None,
filter_categories=None):
def __init__(self, home_coordinates, filter_radius=None, filter_categories=None):
"""Initialise this service."""
super().__init__(home_coordinates, URL, filter_radius=filter_radius)
self._filter_categories = filter_categories

def _new_entry(self, home_coordinates, rss_entry, global_data):
"""Generate a new entry."""
attribution = None if not global_data and ATTR_ATTRIBUTION not in \
global_data else global_data[ATTR_ATTRIBUTION]
return QldBushfireAlertFeedEntry(home_coordinates, rss_entry,
attribution)
attribution = (
None
if not global_data and ATTR_ATTRIBUTION not in global_data
else global_data[ATTR_ATTRIBUTION]
)
return QldBushfireAlertFeedEntry(home_coordinates, rss_entry, attribution)

def _filter_entries(self, entries):
"""Filter the provided entries."""
entries = super()._filter_entries(entries)
if self._filter_categories:
return list(filter(lambda entry:
entry.category in self._filter_categories,
entries))
return list(
filter(lambda entry: entry.category in self._filter_categories, entries)
)
return entries


Expand Down
2 changes: 2 additions & 0 deletions pyproject.toml
@@ -0,0 +1,2 @@
[tool.black]
target-version = ['py36', 'py37', 'py38']
4 changes: 2 additions & 2 deletions tests/__init__.py
Expand Up @@ -4,6 +4,6 @@

def load_fixture(filename):
"""Load a fixture."""
path = os.path.join(os.path.dirname(__file__), 'fixtures', filename)
with open(path, encoding='utf-8') as fptr:
path = os.path.join(os.path.dirname(__file__), "fixtures", filename)
with open(path, encoding="utf-8") as fptr:
return fptr.read()
72 changes: 35 additions & 37 deletions tests/test_init.py
Expand Up @@ -4,8 +4,10 @@
from unittest import mock

from georss_client import UPDATE_OK
from georss_qld_bushfire_alert_client import \
QldBushfireAlertFeed, QldBushfireAlertFeedManager
from georss_qld_bushfire_alert_client import (
QldBushfireAlertFeed,
QldBushfireAlertFeedManager,
)
from tests import load_fixture

HOME_COORDINATES = (-31.0, 151.0)
Expand All @@ -18,17 +20,18 @@ class TestQldBushfireAlertFeed(unittest.TestCase):
@mock.patch("requests.Session")
def test_update_ok(self, mock_session, mock_request):
"""Test updating feed is ok."""
mock_session.return_value.__enter__.return_value.send\
.return_value.ok = True
mock_session.return_value.__enter__.return_value.send\
.return_value.text = \
load_fixture('qld_bushfire_alert_feed.xml')
mock_session.return_value.__enter__.return_value.send.return_value.ok = True
mock_session.return_value.__enter__.return_value.send.return_value.text = (
load_fixture("qld_bushfire_alert_feed.xml")
)

feed = QldBushfireAlertFeed(HOME_COORDINATES)
assert repr(feed) == "<QldBushfireAlertFeed(home=(-31.0, 151.0), " \
"url=https://www.qfes.qld.gov.au/data/alerts/" \
"bushfireAlert.xml, radius=None, categories=" \
"None)>"
assert (
repr(feed) == "<QldBushfireAlertFeed(home=(-31.0, 151.0), "
"url=https://www.qfes.qld.gov.au/data/alerts/"
"bushfireAlert.xml, radius=None, categories="
"None)>"
)
status, entries = feed.update()
assert status == UPDATE_OK
self.assertIsNotNone(entries)
Expand All @@ -54,15 +57,12 @@ def test_update_ok(self, mock_session, mock_request):
@mock.patch("requests.Session")
def test_update_ok_with_category(self, mock_session, mock_request):
"""Test updating feed is ok."""
mock_session.return_value.__enter__.return_value.send\
.return_value.ok = True
mock_session.return_value.__enter__.return_value.send\
.return_value.text = \
load_fixture('qld_bushfire_alert_feed.xml')

feed = QldBushfireAlertFeed(
HOME_COORDINATES,
filter_categories=['Category 1'])
mock_session.return_value.__enter__.return_value.send.return_value.ok = True
mock_session.return_value.__enter__.return_value.send.return_value.text = (
load_fixture("qld_bushfire_alert_feed.xml")
)

feed = QldBushfireAlertFeed(HOME_COORDINATES, filter_categories=["Category 1"])
status, entries = feed.update()
assert status == UPDATE_OK
self.assertIsNotNone(entries)
Expand All @@ -76,11 +76,10 @@ def test_update_ok_with_category(self, mock_session, mock_request):
@mock.patch("requests.Session")
def test_feed_manager(self, mock_session, mock_request):
"""Test the feed manager."""
mock_session.return_value.__enter__.return_value.send\
.return_value.ok = True
mock_session.return_value.__enter__.return_value.send\
.return_value.text = load_fixture(
'qld_bushfire_alert_feed.xml')
mock_session.return_value.__enter__.return_value.send.return_value.ok = True
mock_session.return_value.__enter__.return_value.send.return_value.text = (
load_fixture("qld_bushfire_alert_feed.xml")
)

# This will just record calls and keep track of external ids.
generated_entity_external_ids = []
Expand All @@ -100,22 +99,21 @@ def _remove_entity(external_id):
removed_entity_external_ids.append(external_id)

feed_manager = QldBushfireAlertFeedManager(
_generate_entity,
_update_entity,
_remove_entity,
HOME_COORDINATES)
assert repr(feed_manager) == "<QldBushfireAlertFeedManager(" \
"feed=<QldBushfireAlertFeed(home=" \
"(-31.0, 151.0), url=https://www." \
"qfes.qld.gov.au/data/alerts/" \
"bushfireAlert.xml, " \
"radius=None, categories=None)>)>"
_generate_entity, _update_entity, _remove_entity, HOME_COORDINATES
)
assert (
repr(feed_manager) == "<QldBushfireAlertFeedManager("
"feed=<QldBushfireAlertFeed(home="
"(-31.0, 151.0), url=https://www."
"qfes.qld.gov.au/data/alerts/"
"bushfireAlert.xml, "
"radius=None, categories=None)>)>"
)
feed_manager.update()
entries = feed_manager.feed_entries
self.assertIsNotNone(entries)
assert len(entries) == 2
assert feed_manager.last_timestamp \
== datetime.datetime(2018, 9, 27, 8, 0)
assert feed_manager.last_timestamp == datetime.datetime(2018, 9, 27, 8, 0)
assert len(generated_entity_external_ids) == 2
assert len(updated_entity_external_ids) == 0
assert len(removed_entity_external_ids) == 0

0 comments on commit 5ea3edc

Please sign in to comment.