Python client library for ferien-api.de
Project description
ferien-api
Python client library for ferien-api.de
Installation
ferien-api
needs python 3.5+ to function properly
pip install ferien-api
Usage
You could use the synchronous implementation which will block until a response arrives from the api or you could use the async implementation which will be non-blocking your other async stuff.
Synchronous:
import ferien
def main():
# Get all vacations for all time and states
print("All vacations:", ferien.all_vacations())
# Get all vacations for a specific state (in this case Hamburg - HH) ...
print("All vacations for HH:", ferien.state_vacations('HH'))
# ... and optionally for a specific year
print("All vacations for HH in 2019:", ferien.state_vacations('HH', 2019))
# Fetch all valid states
print("Valid state codes:", ferien.state_codes())
# Get current vacation (None if there is no vacation)
print("Current vacation in HH:", ferien.current_vacation('HH'))
# Get next vacation (None if there is no next vacation)
print("Next vacation in HH:", ferien.next_vacation('HH'))
if __name__ == '__main__':
main()
Asynchronous:
import asyncio
import ferien
async def main():
# Get all vacations for all time and states
print("All vacations:", await ferien.all_vacations_async())
# Get all vacations for a specific state (in this case Hamburg - HH) ...
print("All vacations for HH:", await ferien.state_vacations_async('HH'))
# ... and optionally for a specific year
print("All vacations for HH in 2019:", await ferien.state_vacations_async('HH', 2019))
# Fetch all valid states. This one is _NOT_ async
print("Valid state codes:", ferien.state_codes())
# Get current vacation (None if there is no vacation)
print("Current vacation in HH:", ferien.current_vacation(vacs=await ferien.state_vacations_async('HH')))
# Get next vacation (None if there is no next vacation)
print("Next vacation in HH:", ferien.next_vacation(vacs=await ferien.state_vacations_async('HH')))
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
Both implementations of all_vacations
and state_vacations
will return a list of Vacation
data objects.
See below for the definition of a Vacation
object.
Vacation(
start=datetime.datetime(2020, 12, 21, 0, 0),
end=datetime.datetime(2021, 1, 5, 0, 0),
year=2020,
state_code='HH',
name='weihnachtsferien',
slug='weihnachtsferien-2020-HH'
)
Please note: All datetime objects are in the Europe/Berlin (CET/CEST)
timezone
Using the async version it is easy to make multiple requests in "parallel" (not true... you know that when you are an asyncio enthusiast) and save a lot of time:
import asyncio
import ferien
async def print_wrapper(state_code):
print("Fetching {}".format(state_code))
res = await ferien.state_vacations_async(state_code, 2019)
print("Fetched {}".format(state_code))
return res
if __name__ == '__main__':
loop = asyncio.get_event_loop()
coros = [
print_wrapper('HH'),
print_wrapper('SH'),
print_wrapper('BE'),
print_wrapper('BB')
]
loop.run_until_complete(asyncio.gather(*coros))
Changelog
0.3.7
- Adapts the vacation date parsing logic to the new ferien-api standard (#8)
- Fixes some linting errors using the latest linter / mypy (#8)
0.3.6
- Removes unnecessary print statement in utils.py
0.3.5
- Adds strptime fallback for Z remainder (#5)
0.3.4
- Fixes incorrect localization to Europe/Berlin for dates
0.3.3
- Changes all timestamps from naive to 'Europe/Berlin'
0.3.2
- Adds type hints to codebase
- Adds mypy as a linter
0.3.1
- Adds pylint as a linter and make him happy!
0.3.0
- Adds
current_vacation
andnext_vacation
implementations
0.2.0
- Adds an async implementation of
all_vacations
andstate_vacations
0.1.0
- Initial version
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file ferien-api-0.3.7.tar.gz
.
File metadata
- Download URL: ferien-api-0.3.7.tar.gz
- Upload date:
- Size: 6.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.7.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7b7839d355b9345c4d44edc7c7778664ce89e91cf8156c54a64ae71672ef55d8 |
|
MD5 | f376c71828d25720fcbda3ed1685f9f2 |
|
BLAKE2b-256 | e5cae6437a67c0449b56b54a9abd06e1a1673e21c4fe45a6552d4cdead5a7492 |