Epi Weeks
=========
A Python package to calculate epidemiological weeks using the CDC (MMWR),
ISO and BARC week numbering systems.
|travis| |codecov| |docs| |supported| |version| |license|
.. |travis|
image:: https://img.shields.io/travis/com/dralshehri/epiweeks.svg
:alt: Build Status
:target: https://travis-ci.com/dralshehri/epiweeks
.. |codecov|
image:: https://img.shields.io/codecov/c/github/dralshehri/epiweeks.svg
:alt: Coverage Status
:target: https://codecov.io/github/dralshehri/epiweeks
.. |docs|
image:: https://img.shields.io/readthedocs/epiweeks/stable.svg
:alt: Docs Status
:target: https://epiweeks.readthedocs.io/
.. |supported|
image:: https://img.shields.io/pypi/pyversions/epiweeks.svg
:alt: Python version support
:target: https://pypi.python.org/pypi/epiweeks
.. |version|
image:: https://img.shields.io/pypi/v/epiweeks.svg
:alt: PyPI Package version
:target: https://pypi.python.org/pypi/epiweeks
.. |license|
image:: https://img.shields.io/github/license/dralshehri/epiweeks.svg
:alt: License
:target: https://github.com/dralshehri/epiweeks/blob/master/LICENSE
Features
--------
- Support for both the CDC (MMWR) and ISO week numbering systems.
- Accurate and tested calculations.
- Intuitive, clean, and easy-to-use interface.
- Calculation of the start and end dates of weeks.
- Iteration of year's weeks or week's dates.
- Rich comparison between weeks.
- Logical operations for weeks (addition, subtraction and containment).
- Validation of input data.
- Works on Python 3.6+ with zero dependencies.
- Thoroughly tested on all supported Python versions.
- Add support for Barc (Week start day from Saturday).
Installation
------------
.. code-block:: bash
$ pip install -U epiweeks-barc
Basic Usage
-----------
.. code-block:: python
from epiweeks import Week, Year
week = Week(2019, 1)
print(week.enddate())
# 2019-01-05
for week in Year(2019).iterweeks():
print(week.enddate())
# 2019-01-05
# 2019-01-12
# ...
# 2019-12-21
# 2019-12-28
Online Tool
-----------
The following is a simple online tool that was developed to calculate
epidemiological weeks (CDC system only) using the latest version of
this package:
https://www.dralshehri.com/epiweeks/
Documentation
-------------
Please see https://epiweeks.readthedocs.io/ for full documentation of
this package, including overview, more usage examples and API reference.
Contributing
------------
Contributions are welcome! See
`CONTRIBUTING.rst <https://github.com/dralshehri/epiweeks/blob/master/CONTRIBUTING.rst>`__
for more info.
Authors
-------
The main author is Mohammed Alshehri —
`@dralshehri <https://github.com/dralshehri>`__.
License
-------
This package is distributed under an MIT license.
See `LICENSE <https://github.com/dralshehri/epiweeks/blob/master/LICENSE>`__.
Change Log
----------
**2.1.1**
- Fixed some typos.
- Improved documentation.
**2.1.0**
- Changed the parameter ``method``, which sets how the weeks are
numbered, to ``system`` for better clarity and intuitive usage.
- Updated documentation and unit tests.
- Other minor fixes and enhancements.
**2.0.0**
- Dropped support for Python 3.5.
- Added ``fromstring()`` classmethod to allow constructing the ``Week`` object
from a formatted string, for example '2019W08' or '201908'.
- Added ``cdcformat()`` method to return a formatted string like the one used
by US CDC for epi weeks, for example for week 8 of 2019 it returns '201908'.
- Added ``daydate()`` method to return the date of specific weekday for a week.
- Changed the optional value 'WHO' of the parameter ``method`` to 'ISO'.
- Changed the ``fromdate()`` classmethod of ``Week`` object to accept a date
object as an argument instead of year, month, and day.
- Made the ``Week`` and ``Year`` objects hashable.
- Improved rich comparison methods.
- Improved input data validation.
- Updated and improved documentation examples.
- Updated unit tests.
- Other minor fixes and enhancements.
**1.0.0**
- First release.