Skip to content

Commit

Permalink
Version 0.2
Browse files Browse the repository at this point in the history
  • Loading branch information
bartdorlandt committed Dec 25, 2017
1 parent 17356e5 commit d514efa
Show file tree
Hide file tree
Showing 6 changed files with 62 additions and 44 deletions.
39 changes: 21 additions & 18 deletions Afvalwijzer/Afvalwijzer.py
Expand Up @@ -15,23 +15,28 @@
>>> from Afvalwijzer import Afvalwijzer
>>> zipcode = '3564KV'
>>> number = '13'
>>> garbage = Afvalwijzer(zipcode, number)
>>> garbage = Afvalwijzer.Afvalwijzer(zipcode, number)
>>> garbage.get_pickupdate()
>>> garbage.pickupdate
'2017-12-27'
>>> garbage.get_wastetype()
>>> garbage.wastetype
'Groente-, Fruit- en Tuinafval'
>>> garbage.garbage()
>>> garbage.garbage
('2017-12-27', 'Groente-, Fruit- en Tuinafval')
The following function only returns true if the pickup date is the same as today.
>>> garbage.notify
'''

import requests
from bs4 import BeautifulSoup
import datetime

__version__ = '0.2'


class Afvalwijzer(object):

Expand All @@ -40,36 +45,34 @@ def __init__(self, zipcode, housenumber):
self.housenumber = housenumber
self._year = datetime.datetime.now().year
self._today = datetime.date.today()
self._wastetype = None
self._pickupdate = None
self._pickupdate, self._wastetype = self.__get_data()

def __get_data(self):
if self._pickupdate and self._wastetype:
return
url = 'http://www.mijnafvalwijzer.nl/nl/{}/{}/'.format(
self.zipcode, self.housenumber)
html = requests.get(url).content
soup = BeautifulSoup(html, "html.parser")
dow, day, month = soup.find('p', class_="firstDate").string.split()
self._wastetype = str(soup.find('p', class_="firstWasteType").string)
# self._pickupdate = datetime.date(self._year, int(day), int(month))
self._pickupdate = datetime.datetime.strptime(
wastetype = str(soup.find('p', class_="firstWasteType").string)
pickupdate = datetime.datetime.strptime(
' '.join((str(self._year), day, month)), '%Y %d %B').date()
return pickupdate, wastetype

def get_pickupdate(self):
self.__get_data()
@property
def pickupdate(self):
return self._pickupdate.strftime('%Y-%m-%d')

def get_wastetype(self):
self.__get_data()
@property
def wastetype(self):
return self._wastetype

@property
def notify(self):
'''If the pickup date is today, return True.'''
self.__get_data()
if self._pickupdate == self._today:
if self.pickupdate == self._today:
return True

@property
def garbage(self):
'''Return both the pickup date and the container type.'''
return self.get_pickupdate(), self.get_wastetype()
return self.pickupdate, self.wastetype
2 changes: 1 addition & 1 deletion Afvalwijzer/__init__.py
@@ -1 +1 @@
from .Afvalwijzer import Afvalwijzer
from Afvalwijzer import Afvalwijzer
11 changes: 11 additions & 0 deletions HISTORY.md
@@ -0,0 +1,11 @@
# Release History

### 0.2 (2017-08-25)
* Status Beta
* Versioning in sync, setup reads it from the program
* History (this file) added
* Property decorators instead of traditional getters
* README improved

### 0.1 (2017-08-24)
**Initial release**
13 changes: 6 additions & 7 deletions README.md
Expand Up @@ -23,22 +23,21 @@ pip uninstall afvalwijzer
>>> from Afvalwijzer import Afvalwijzer
>>> zipcode = '3564KV'
>>> number = '13'
>>> garbage = Afvalwijzer(zipcode, number)
>>> garbage = Afvalwijzer.Afvalwijzer(zipcode, number)

>>> garbage.get_pickupdate()
>>> garbage.pickupdate
'2017-12-27'

>>> garbage.get_wastetype()
>>> garbage.wastetype
'Groente-, Fruit- en Tuinafval'

>>> garbage.garbage()
>>> garbage.garbage
('2017-12-27', 'Groente-, Fruit- en Tuinafval')

```

The following function returns true if the pickup date is the same as today.
The following function only returns true if the pickup date is the same as today.
```python
>>> garbage.notify()
>>> garbage.notify
```

Below is shown how I use it to get notified using pushbullet.
Expand Down
13 changes: 9 additions & 4 deletions setup.py
@@ -1,6 +1,8 @@
from setuptools import setup
from codecs import open

from Afvalwijzer import Afvalwijzer

# Packaging
# https://packaging.python.org/tutorials/distributing-packages/
# classifiers
Expand All @@ -9,16 +11,19 @@
with open('README.md', 'r', 'utf-8') as f:
readme = f.read()

with open('HISTORY.md', 'r', 'utf-8') as f:
history = f.read()

setup(name='afvalwijzer',
version='0.1',
version=Afvalwijzer.__version__,
description='Getting the waste date and type for the Netherlands',
long_description=readme,
long_description=readme + '\n\n' + history,
url='https://github.com/bambam82/afvalwijzer',
author='Bart Dorlandt',
author_email='bart@bamweb.nl',
license='MIT',
classifiers=[
'Development Status :: 3 - Alpha',
'Development Status :: 4 - Beta',
'License :: OSI Approved :: MIT License',
'Intended Audience :: End Users/Desktop',
'Intended Audience :: Other Audience',
Expand All @@ -39,7 +44,7 @@
packages=['Afvalwijzer'],
install_requires=['requests', 'beautifulsoup4', 'datetime'],
include_package_data=True,
# python_requires='>=2.7.*, >=3.4.*, <4',
# python_requires='>=2.7.0, >=3.4.0, <4',
setup_requires=['pytest-runner'],
tests_require=['pytest'],
zip_safe=False)
28 changes: 14 additions & 14 deletions tests/test_Afvalwijzer.py
Expand Up @@ -5,38 +5,38 @@

class TestAfvalwijzer(object):
def test_zipcode(self):
garbage = Afvalwijzer('3564KV', 13)
garbage = Afvalwijzer.Afvalwijzer('3564KV', 13)
assert garbage.zipcode == '3564KV'

def test_housenumber(self):
garbage = Afvalwijzer('3564KV', 13)
garbage = Afvalwijzer.Afvalwijzer('3564KV', 13)
assert garbage.housenumber == 13

def test_today(self):
garbage = Afvalwijzer('3564KV', 13)
garbage = Afvalwijzer.Afvalwijzer('3564KV', 13)
assert type(garbage._today) is datetime.date

def test_garbage(self):
garbage = Afvalwijzer('3564KV', 13)
date, wastetype = garbage.garbage()
garbage = Afvalwijzer.Afvalwijzer('3564KV', 13)
date, wastetype = garbage.garbage
assert type(date) is str, "output is not a string: %r" % date
assert type(wastetype) is str, "output is not a string: %r" % date

def test_get_pickupdate(self):
garbage = Afvalwijzer('3564KV', 13)
date = garbage.get_pickupdate()
def test_pickupdate(self):
garbage = Afvalwijzer.Afvalwijzer('3564KV', 13)
date = garbage.pickupdate
assert type(date) is str, "output is not a string: %r" % date

def test_get_wastetype(self):
garbage = Afvalwijzer('3564KV', 13)
wastetype = garbage.get_wastetype()
def test_wastetype(self):
garbage = Afvalwijzer.Afvalwijzer('3564KV', 13)
wastetype = garbage.wastetype
assert type(wastetype) is str, "output is not a string: %r" % wastetype

def test_notify(self):
garbage = Afvalwijzer('3564KV', 13)
garbage = Afvalwijzer.Afvalwijzer('3564KV', 13)
date = garbage._pickupdate
today = garbage._today
if date == today:
assert garbage.notify() is True
assert garbage.notify is True
else:
assert garbage.notify() is None
assert garbage.notify is None

0 comments on commit d514efa

Please sign in to comment.