A corrector for the 'opening_hours' fields from OpenStreetMap.
Project description
Opening hours sanitizer - A corrector for the 'opening_hours' fields
=========================================================================
If you work with the `opening_hours` fields in OpenStreetMap, you probably need to check somewhere if a field is valid before to parse it, or to do anything with it.
Of course, for simple formats, can do this with regexes, but [specifications](https://wiki.openstreetmap.org/wiki/Key:opening_hours/specification) are so rich that a full regex to handle them is quite impossible.
This is the goal of this tiny module: check if an `opening_hours` field is valid, and try to correct it if it isn't.
In addition to the simple formats, like `Mo-Fr 10:00-20:00`, it can parse and fix almost all shapes of opening hours.
Here is what it can do.
```python
>>> from oh_sanitizer import sanitize_field
>>> print(sanitize_field("mo-fr 10h - 19h00"))
"Mo-Fr 10:00-19:00"
>>> print(sanitize_field("2010 - 2020/2 dec-feb 10:00 am - 12:00 am/1:00 pm-7:00pm"))
"2010-2020/2 Dec-Feb 10:00-12:00,13:00-19:00"
```
It is so small that you can include it directly into your projet.
You can also install it with PyPi:
$ pip3 install oh-sanitizer
The `sanitize_field()` function can raise the following exceptions:
- `TypeError` : If the given field is not a string.
- `SanitizeError` : The generic exception of `oh_sanitizer`,
raised when the field can't be parsed (if it is too complex,
or "too much invalid").
- `InconsistentField` : Inheriting from `SanitizeError`,
raised when the field contains an invalid pattern which can't
be corrected automatically.
So, you can simple do this.
```python
from oh_sanitizer import sanitize_field, SanitizeError
field = "mo-fr 10h - 19h00"
try:
sanitized_field = sanitize_field(field)
print("Here is the sanitized field:", sanitized_field)
except SanitizeError:
print("So bad, the field could not be sanitized.")
```
If you want to parse `opening_hours` fields to know, for example, whether a facility is open, OH Sanitizer is NOT what you need.
See the [Humanized Opening Hours](https://github.com/rezemika/humanized_opening_hours) module or its [alternatives](https://github.com/rezemika/humanized_opening_hours#alternatives).
=========================================================================
If you work with the `opening_hours` fields in OpenStreetMap, you probably need to check somewhere if a field is valid before to parse it, or to do anything with it.
Of course, for simple formats, can do this with regexes, but [specifications](https://wiki.openstreetmap.org/wiki/Key:opening_hours/specification) are so rich that a full regex to handle them is quite impossible.
This is the goal of this tiny module: check if an `opening_hours` field is valid, and try to correct it if it isn't.
In addition to the simple formats, like `Mo-Fr 10:00-20:00`, it can parse and fix almost all shapes of opening hours.
Here is what it can do.
```python
>>> from oh_sanitizer import sanitize_field
>>> print(sanitize_field("mo-fr 10h - 19h00"))
"Mo-Fr 10:00-19:00"
>>> print(sanitize_field("2010 - 2020/2 dec-feb 10:00 am - 12:00 am/1:00 pm-7:00pm"))
"2010-2020/2 Dec-Feb 10:00-12:00,13:00-19:00"
```
It is so small that you can include it directly into your projet.
You can also install it with PyPi:
$ pip3 install oh-sanitizer
The `sanitize_field()` function can raise the following exceptions:
- `TypeError` : If the given field is not a string.
- `SanitizeError` : The generic exception of `oh_sanitizer`,
raised when the field can't be parsed (if it is too complex,
or "too much invalid").
- `InconsistentField` : Inheriting from `SanitizeError`,
raised when the field contains an invalid pattern which can't
be corrected automatically.
So, you can simple do this.
```python
from oh_sanitizer import sanitize_field, SanitizeError
field = "mo-fr 10h - 19h00"
try:
sanitized_field = sanitize_field(field)
print("Here is the sanitized field:", sanitized_field)
except SanitizeError:
print("So bad, the field could not be sanitized.")
```
If you want to parse `opening_hours` fields to know, for example, whether a facility is open, OH Sanitizer is NOT what you need.
See the [Humanized Opening Hours](https://github.com/rezemika/humanized_opening_hours) module or its [alternatives](https://github.com/rezemika/humanized_opening_hours#alternatives).
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
oh_sanitizer-0.1.1.tar.gz
(19.2 kB
view details)
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
oh_sanitizer-0.1.1-py3.5.egg
(58.1 kB
view details)
File details
Details for the file oh_sanitizer-0.1.1.tar.gz.
File metadata
- Download URL: oh_sanitizer-0.1.1.tar.gz
- Upload date:
- Size: 19.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
edce79b9d495b27b3e078043a8ca04996ac52da162e572c94f890f65ee1cd503
|
|
| MD5 |
14f24106ade0c2fa8e6d246d0684dfdc
|
|
| BLAKE2b-256 |
0cea6009c30127d028cf58654a189265f872b86c9c7a69faaf1e61941bb54094
|
File details
Details for the file oh_sanitizer-0.1.1-py3.5.egg.
File metadata
- Download URL: oh_sanitizer-0.1.1-py3.5.egg
- Upload date:
- Size: 58.1 kB
- Tags: Egg
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e102c6a51989a3362bc975492898c0962cadeedd3dfe7efa41246ade5d55db2e
|
|
| MD5 |
27015724a58ca65a46b7bbe6d46425f0
|
|
| BLAKE2b-256 |
4b4b29139918c282428fd3262226d56a031b4570734bb8e53d626a091f4678e8
|
File details
Details for the file oh_sanitizer-0.1.1-py3-none-any.whl.
File metadata
- Download URL: oh_sanitizer-0.1.1-py3-none-any.whl
- Upload date:
- Size: 28.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
487b452c0c6c1ad137087b2dfe6ca1f4110e8d42b50bb66ae747f9d6a1c05415
|
|
| MD5 |
b01e8d305aaed751e32f427e4ced337a
|
|
| BLAKE2b-256 |
66d40fdada265de9e6427395e75dc129481efb6fb12fd045534d1ed7003f9b61
|